【发布时间】:2018-05-11 12:03:50
【问题描述】:
我正在编写一段代码,它将遍历一张数据表并检查所述数据是否在主表中,如果找不到,它将添加数据。
我正在努力通过For Each Cell in range 来做这件事。但是,我遇到了一个似乎无法解决的问题。这可能只是我很慢,在做了几个小时后没有找到它。
这是我目前所拥有的。我会省略声明。
该代码用于获取 sheet1 并查看 sheet2 中是否缺少任何这些股票代码,如果缺少它们只是通知用户。
Set xlsheet1 = Sheets("Gold")
Set xlsheet4 = Sheets("Working Sheet")
xlsheet1.Activate
xllr1 = xlsheet1.Range("B1").End(xlDown).Row
Set xlrange1 = xlsheet1.Range("B1:B" & xllr1)
With Range("A:Z")
鉴于我的数据是动态的,我使用以下 .find 来查找列 带有股票代码。
Set gs = .Find(what:="Symbol", After:=.Cells(.Cells.Count), LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
gcol = gs.Column
fr1 = gs.Row + 1
End With
xlsheet4.Activate
xllr4 = xlsheet4.Range("A1").End(xlDown).Row
Set xlrange4 = xlsheet4.Range("A1:A" & xllr3)
这是我遇到问题的地方。当股票代码匹配时它工作正常。我正在考虑插入一行,说 if i = xllr1 and xlcell4.value cells(i, gcol) then etc... 但它似乎不起作用。
xlsheet1.Activate
For i = fr1 To xllr1
For Each xlcell4 In xlrange4
If xlcell4.Value = Cells(i, gcol) Then
Else
MsgBox "did not find code " & Cells(i, gcol)
End If
Next xlcell4
Next i
我希望这是有道理的,并感谢任何帮助!
【问题讨论】:
-
如果您包含每张工作表的小快照以及您期望它们之间的关系如何,将会很有帮助。仅仅阅读一堆 VBA 并可视化工作表中发生的事情通常是非常具有挑战性的。
-
声明很重要
-
嗨@PatJones,我将上传一张表格模型以提供更多背景信息。感谢您的反馈。我只发布了一个更大宏的 sn-p,只是不想占用空间。
-
@Manu221 根据你的截图,你有一个错字,你写的是
smybol而不是symbol。其次,在两个屏幕截图中,数据都在 A 列中,在您的代码中,它在 B 列中,那么它是哪一个? -
@ShaiRado 我无法对数据进行实际截图,因为我目前无权访问它。我只是快速模拟了数据的样子。实际工作表中的数据在B列。符号的输入只是一个错字。