重点是这个:End(xlDown)、End(xlUp)、End(xltoLeft)、End(xltoRight),就是从某个单元格开始,向下/上/左/右 找到第一个有数据的单元格。
sheet1
A | B
id | 公式列
001 | 20
002 | 11
003 | 0
sheet2原始
A | B | C
id | 公式列 | 数值列
004 | 12 | 12
005 | 17 | 17
sheet2宏后
A | B | C
id | 公式列 | 数值列
004 | 12 | 12
005 | 17 | 17
003 | 0 | 0
我要把sheet1的B:B列是0的A:A列筛选出来,再复制:
Sheets("sheet1").Select
ActiveSheet.Range("$B$1:$B$10000").AutoFilter Field:=3, Criteria1:=0
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
再粘贴到sheet2的A:A列最下面:
Sheets("sheet2").Select
Range("A1").Select
Selection.End(xlDown).Select
Range("A" & Range("A1").End(xlDown).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
把sheet2的第二列公式填充下来:
Sheets("sheet2").Select
ROW1 = Range("A" & Rows.Count).End(xlUp).Row
Range("B2").Copy
Range("B2:B" & ROW1).PasteSpecial Paste:=xlPasteFormulas
= False
把填充的公式显示的数值复制到C:C列
Sheets("sheet2").Select
ROW2 = Range("C" & Rows.Count).End(xlUp).Row
Range(Cells(ROW2 + 1, 2), Cells(ROW1, 2)).Select
Selection.Copy
Range(Cells(ROW2 + 1, 3), Cells(ROW1, 3)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False