Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim wk1 As Workbook, sh1 As Worksheet, wk2 As Workbook, sh2 As Worksheet
Filename = Application.GetOpenFilename(fileFilter:="Excel File (*.xlsx), *.xlsx,Excel File(*.xls), *.xls", FilterIndex:=2, Title:="请选择文件")
If Filename = False Then
Else
Workbooks.Open (Filename)
Set wk1 = ThisWorkbook
Set sh1 = wk1.ActiveSheet
Set wk2 = ActiveWorkbook
Set sh2 = ActiveSheet
sh2.[a:a].Copy sh1.[a:a]
wk2.Close savechanges:=False
MsgBox "数据导入成功!"
End If
End Sub
追问这个方法解决了我所提出的问题,但还是没能解决我的最终目的,故追问一下。
我的根本的问题,是希望一个公式应用到一列中有值的最后一项。通常通过拖动单元格右下角的“+”符号,或者双击这个符号让公式适用于一整列来实现。
然而当我一列有几万项时,拖动“+”就不方便,而且当公式复杂,将此公式适用于一整列会大大增加计算量。
所以再问下,将某个公式适用于某一列的最后一个有值单元格,并且就此终止该怎样实现。
追答如果数据量大,又要从其它工作薄中获取数据,那么,使用公式是不可取的。因为会拖慢系统的运行。甚至根本无法正常工作。
不明白你的意思,你的意思是想在原来的数据下面追加数据吗?
追问我目前已经解决了。你给的代码很有帮助,有个小问题,如果我想提取A表第A, G, L 3列到B文件的ABC3列,代码该怎么改呢?
追答Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim wk1 As Workbook, sh1 As Worksheet, wk2 As Workbook, sh2 As Worksheet, r1%, r2%
Filename = Application.GetOpenFilename(fileFilter:="Excel File (*.xlsx), *.xlsx,Excel File(*.xls), *.xls", FilterIndex:=2, Title:="请选择文件")
If Filename = False Then
Else
Workbooks.Open (Filename)
Set wk1 = ThisWorkbook
Set sh1 = wk1.ActiveSheet
Set wk2 = ActiveWorkbook
Set sh2 = ActiveSheet
r1 = sh1.[a1048576].End(3).Row + 1
r2 = sh2.[a1].End(4).Row
sh2.Range("A1:A" & r2).Copy sh1.Range("A" & r1)
sh2.Range("G1:A" & r2).Copy sh1.Range("B" & r1)
sh2.Range("L1:A" & r2).Copy sh1.Range("C" & r1)
wk2.Close savechanges:=False
MsgBox "数据导入成功!"
End If
End Sub