如何通过VBA查找一个sheet中匹配的记录并拷贝该记录至另一个sheet中?在线等待!

lxf4221 2008-03-19 10:02:32
如在excel表中有一个sheet1里面有这样的一些数据:
A B C
日期 品名 数量
20070101 商品1 3
20070101 商品2 3
20070101 商品3 3
20070102 商品1 3
20070102 商品2 2
20070102 商品3 3
20070103 商品1 1
20070103 商品2 3
20070103 商品3 3
20070104 商品1 1
20070104 商品2 3
20070104 商品3 3


先希望通过VBA实现,查找 sheet1 中日期为 20070102 和 20070103的行,并把匹配的行拷贝到sheet2中,请问如何解决。日期已经排序。
...全文
2798 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
truezhang 2010-09-21
  • 打赏
  • 举报
回复
都是高手
line_us 2010-08-30
  • 打赏
  • 举报
回复
1、查找
2、复制行
3、粘贴行
4、OVER
dcjz 2010-08-23
  • 打赏
  • 举报
回复
碰到了差不多的问题。。。。 正在一头雾水的研究。。。。。
kevinrobot 2010-08-19
  • 打赏
  • 举报
回复
感觉不错啊!我也试试~
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
关注 接分
zipall 2008-03-20
  • 打赏
  • 举报
回复
我觉得遍历的方法在数据量大时比较慢
针对楼主的问题,因为日期已经排序,所以只需要用match函数找到第一个和最后一个符合条件的数据的row,然后复制即可。


Sub 复制()
With Application.WorksheetFunction
Sheets("sheet1").Range("A" & .Match("20070102", Sheets("sheet1").[A:A], 0) & ":C" & .Match("20070103", Sheets("sheet1").[A:A], 0) + .CountIf(Sheets("sheet1").[A:A], "20070103") - 1).Copy (Sheets("sheet2").[A2])
End With
End Sub


ChinaOBS 2008-03-19
  • 打赏
  • 举报
回复
用find(或其他match、vlookup....)找A列,找到后整行复制
当然也可以用基本的for...next循环

至于如何复制整行,录制一段宏就知道了... ...
gracexu 2008-03-19
  • 打赏
  • 举报
回复
你的需求描述的不够好哦,日期是作为参数呢增加灵活性呢,还是直接写死在程序里?
另外,为什么要用VBA实现呢?看见太多的帖子在找人写代码哦。
homesos 2008-03-19
  • 打赏
  • 举报
回复
思路跟楼上的都差不多


Dim iRowIndex As Integer
Dim strID As String
Dim strYear As String

iRowIndex = 1

Do While 1
strID = Sheet1.Range("A" & iRowIndex).Value

If strID = "" Then
Exit Sub
End If

If strID="20070102 " or strID="20070103" Then '具体匹配项可当参数传入
Sheet2.Range("A" & iRowIndex).value = Sheet1.Range("A" & iRowIndex).value
Sheet2.Range("B" & iRowIndex).value = Sheet1.Range("B" & iRowIndex).value
Sheet2.Range("C" & iRowIndex).value = Sheet1.Range("C" & iRowIndex).value
End If

iRowIndex = iRowIndex + 1
Loop

wolf004 2008-03-19
  • 打赏
  • 举报
回复
Sub copyData()
Dim i As Integer
Dim j As Integer
j = 1

For i = 1 To 200
If Sheet1.Range("A" & i) = "20070102" Then
Sheet2.Range("A" & j) = Sheet1.Range("A" & i)
Sheet2.Range("B" & j) = Sheet1.Range("B" & i)
Sheet2.Range("C" & j) = Sheet1.Range("C" & i)
j = j + 1
End If
Next i

End Sub

可以通过这种方式 findData = InputBox("输入查找条件’ ", "提示")
如果条件多个的话..可分割条件..


5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧