excel指定工作表中的指定列快速顺序合并的方法

2025-11-13 14:16:02

1、分别有工作表1、2、3、4,数据如下图示:

excel指定工作表中的指定列快速顺序合并的方法

excel指定工作表中的指定列快速顺序合并的方法

excel指定工作表中的指定列快速顺序合并的方法

excel指定工作表中的指定列快速顺序合并的方法

2、 按ALT+F11打开VBE编辑器,在工程窗口下的Microsoft Excel对象右键-插入-模块,新建一个模块1。

excel指定工作表中的指定列快速顺序合并的方法

3、粘贴如下代码:

Option Explicit

Sub 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 Integer

flag = False

c = InputBox("请输入列号,如:A、B、C……", "列号输入(请输入大写字母)")

For i = 1 To Sheets.Count

 If Sheets(i).Name = "第" & c & "列合并数据" Then flag = True

Next

If flag = False Then

Set sh = Worksheets.Add

sh.Name = "第" & c & "列合并数据"

Sheets("第" & c & "列合并数据").Move after:=Sheets(Sheets.Count)

End If

b = 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).Column

Else

 l = Sheets("第" & c & "列合并数据").Range("iv1").End(xlToLeft).Column + 1

End If

For 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 If

Next

End Sub

excel指定工作表中的指定列快速顺序合并的方法

4、按ALT+F8打开宏对话框窗口,鼠标单击执行columncopy宏。

excel指定工作表中的指定列快速顺序合并的方法

5、在弹出的“列号输入(请输入大写字母)”对话框中输入所需的列号(笔者测试输入:“B”列),点确定。

excel指定工作表中的指定列快速顺序合并的方法

6、在弹出的“指定工作表(请输入数字)”对话框中按照要求输入所需的工作表(笔者测试输入:“1,2-3,4”即为第1,2至3,4张工作表),点确定。

excel指定工作表中的指定列快速顺序合并的方法

7、最后得到如图示的效果。

excel指定工作表中的指定列快速顺序合并的方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢