您的位置:首页 > 编程语言 > VB

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

2017-11-11 15:50 1071 查看
重点是这个: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
Application.CutCopyMode = 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel vba