作者:绿色风
分类:
时间:2022-08-18
浏览:148
楼主 wise |
Q:如何使用VBA判断工作表是否存在该月数据进行数据复制? 如果Sheet1中的数据不存在,则复制Sheet2的月份的数据;否则不进行复制。
A:ALT+F11→插入模块,在模块中输入以下代码:- Sub test()
- Dim Mrow As Long
- Dim arr As Integer
- '循环sheet1的记录
- For Mrow = 2 To Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
- '如果存在该月份的数据,则判断为1,并且结束循环
- If Sheet2.Range("G2") = Sheet1.Range("A" & Mrow) And Sheet2.Range("G3") & "月" = Sheet1.Range("B" & Mrow) Then
- arr = 1
- Exit For
- End If
- Next
- '如果等于0,即是不存在记录,则复制该表的记录
- If arr = 0 Then
- Sheet2.Range("A2:E27").Copy Destination:=Sheet1.Range("A" & Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1)
- End If
- End Sub
复制数据.rar |
2楼 纵鹤擒龙水中月 |
学习了 |
3楼 chanmark |
肿么不行。。 |
4楼 LOGO |
小七的这段说明还真不好理解,最后还是看了代码才明白小七的意思。 或许改成这样好理解些: Q:如何使用VBA判断汇总工作表sheet1中是否包含了工作表sheet2的数据,如果sheet1还没有sheet2的数据,那么将sheet2的数据复制到sheet1中去,否则不进行复制. 另外Sheet2.Range("A2:E27")改用sheet2.range("a1").currentregion.offset(1,0)或intersect(sheet2.range("a1").currentregion,sheet2.range("a1").currentregion.offset(1,0))会更优。
 - Sub test()
- Dim Mrow As Long
- Dim arr As Integer
- '循环sheet1的记录
- For Mrow = 2 To Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
- '如果存在该月份的数据,结束过程
- If Sheet2.Range("G2") = Sheet1.Range("A" & Mrow) And Sheet2.Range("G3") & "月" = Sheet1.Range("B" & Mrow) Then Exit Sub
- Next
- Sheet2.Range("A1").CurrentRegion.Offset(1, 0).Copy Destination:=Sheet1.Range("A" & Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1)
- End Sub
|
5楼 tiger2003 |
学习了,谢谢! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一