比如将如下图示工作表1、2、3、4,H列合并。
第一种方法:复制、粘贴这个没什么好说的。
第二种方法:利用VBA来实现。
1、按ALT+F11打开VBE编辑器,在工程窗口下的Microsoft Excel对象右键-插入-模块,新建一个模块1,粘贴如下代码:
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
2、按ALT+F8打开宏对话框窗口,鼠标单击执行columncopy宏。在弹出的“列号输入(请输入大写字母)”对话框中输入所需的列号(比如“H”列),点确定。接着在弹出的“指定工作表(请输入数字)”对话框中按照要求输入所需的工作表(比如:“1,2-3,4”即为第1,2至3,4张工作表),点确定。最后得到如下合并效果:
假设总表为A,50个工作表(sheet)为A1-A50。
1、跨sheet引用法:
(1)把表A1的H1引用到表A的B1单元格里:在表A的B1单元格内输入公式【='A1'!$H1】后回车;
(2)引用表A1的所有H列数据:单击表A的单元格B1,然后将鼠标移动到B1外方框的右下角,鼠标变为一个+号后,摁住左键向下拖拽至行500。表A1的H列数据全部引用到表A;
(3)引用表A2的H列数据:单击表A的单元格B1,然后将鼠标移动到B1外方框的右下角,鼠标变为一个+号后,摁住左键向右拖拽到B2。单击B2,修改公式内容为【='A2'!$H1】后回车。按照(2)的方法引用所有H列数据;
(4)A3-A50的数据引用参照(3)即可。
2、数据复制法:
(1)打开表A1,选中并复制H列的所有数据(假设为H1-H500);
(2)打开表A,将鼠标放在单元格B1,单击右键点击“选择性粘贴”,在对话框中选中“数值”然后点击确定;
(3)以此类推,将A2-A50的所有H列数据复制到表A的相应位置。
打开你要的处理的文件,表1,也就是第一个表,要是空表,要用来装结果文件的,对了,建议文件先备份。!!!
然后,按ALT + F11,双击SHEET1,在左边靠上角,粘贴以下代码,保存,然后按F5,就好了,
Sub tttt()
Sheets(1).Columns(8).ClearContents
Sheets(1).Cells(1, 8).Value = "结果"
Dim i As Integer
i = i + 1
For i = 2 To 3
If i > 1 Then
Dim j As Integer
j = j + 1
For j = 1 To 1000
If Sheets(1).Cells(j, 8).Value <> "" And Sheets(1).Cells(j + 1, 8).Value = "" Then
Dim n As Integer
n = n + 1
For n = 1 To 500
If n > 0 Then
Sheets(1).Cells(j + 1, 8).Value = Sheets(i).Cells(n, 8).Value
j = j + 1
End If
Next n
End If
Next j
End If
Next i
End Sub
值得注意的是,我只建立的3个表,测试通过,这个数据量很大,建议你也先用2到3张表测试下,确定程序可用后再使用,我只能尽量保证程序的可用性,但本人不对数据造成的任何后果负责。
只能新建一个表格,从50个工作表中复制H项的全部值一个一个复制到那新表格里了,没什么特快速的方法了``
这个除手工之外,只能用VBA编程来完成。