永发信息网

excel中H列多个排到另一列横着求解

答案:1  悬赏:70  手机版
解决时间 2021-12-02 15:43
  • 提问者网友:留有余香
  • 2021-12-02 07:07
excel中H列多个排到另一列横着求解
最佳答案
  • 五星知识达人网友:纵马山川剑自提
  • 2021-12-02 07:27
比如将如下图示工作表1、2、3、4,H列合并。

第一种方法:复制、粘贴这个没什么好说的。
第二种方法:利用VBA来实现。
1、按ALT+F11打开VBE编辑器,在工程窗口下的Microsoft Excel对象右键-插入-模块,新建一个模块1,粘贴如下代码:
Option ExplicitSub columncopy()Dim c As String, sh As Worksheet, i As Integer, flag As Boolean, b As String, arr, l As Integer, j As Integer, min As Integer, max As Integerflag = Falsec = InputBox("请输入列号,如:A、B、C……", "列号输入(请输入大写字母)")For i = 1 To Sheets.Count If Sheets(i).Name = "第" & c & "列合并数据" Then flag = TrueNextIf flag = False ThenSet sh = Worksheets.Addsh.Name = "第" & c & "列合并数据"Sheets("第" & c & "列合并数据").Move after:=Sheets(Sheets.Count)End Ifb = InputBox("请指定需合并列的工作表,多张连续表请用“-”隔开,多张不连续表请用“,”隔开,如:1,2,3-5,6等。", "指定工作表(请输入数字)")arr = Split(b, ",", -1, vbTextCompare)If Sheets("第" & c & "列合并数据").Range("iv1").End(xlToLeft).Column = 1 Then l = Sheets("第" & c & "列合并数据").Range("iv1").End(xlToLeft).ColumnElse l = Sheets("第" & c & "列合并数据").Range("iv1").End(xlToLeft).Column + 1End IfFor i = 0 To UBound(arr) If InStr(arr(i), "-") Then  min = Split(arr(i), "-", -1, vbTextCompare)(0)  max = Split(arr(i), "-", -1, vbTextCompare)(1)  For j = min To max   Sheets(j).Columns(c & ":" & c).Copy Destination:=Sheets("第" & c & "列合并数据").Cells(1, l)   l = l + 1  Next j Else  Sheets(CInt(arr(i))).Columns(c & ":" & c).Copy Destination:=Sheets("第" & c & "列合并数据").Cells(1, l)  l = l + 1 End IfNextEnd Sub2、按ALT+F8打开宏对话框窗口,鼠标单击执行columncopy宏。在弹出的“列号输入(请输入大写字母)”对话框中输入所需的列号(比如“H”列),点确定。接着在弹出的“指定工作表(请输入数字)”对话框中按照要求输入所需的工作表(比如:“1,2-3,4”即为第1,2至3,4张工作表),点确定。最后得到如下合并效果:

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯