VBA,excel中选择特定内容复制粘贴

时间:2025-03-28 13:13:41

重点是这个: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