我还不熟悉在VBA中使用range/find/findnext并寻求一些帮助。我已经成功实现了单个find - > findnext循环,但是我想知道是否可以使用findnext和两个find。在两个发现中使用findnext
我使用它的代码如下。为了简单起见,我正在使用比萨库存。
要点是我有一个电子表格,第一列是分类栏(奶酪,肉,素食),而列H(偏移部分)是类型 - (莫扎里拉,Parmesean,意大利辣香肠等)。我期望做的是在某个列中编译不同类型的一个类别的列表而不重复。例如,我想在栏I中找到“奶酪”一词的所有实例。我希望代码先找到奶酪一词,然后给我一个类型(切达干酪等)。第二个发现是检查我的最后一列中是否已经存在该类型。如果它已经出现在列中(第二个查找功能=没有),那么它会转到下一个“奶酪”。如果它是新的(第二个查找函数=无),那么我希望它将该类型放在列中并继续。
由于它是错误的,考虑到语法几乎与我以前的Find/Findnext相同,只增加了一个额外的FindNext,我意识到它可能引用了错误的。有什么办法可以避免这种情况?
注意:我意识到我可以很容易地在最后一列中填写所有类型,删除重复项,然后对它们进行排序,但这看起来有点不雅和耗时。我想知道是否有更方便的方式沿着我尝试的方向行进。
a = 2
Set c = Range("I:I").Find("Cheese")
firstadd = c.Address
If Not c Is Nothing Then
Do
temp = c.Offset(0, -1)
Set d = Range("BA:BA").Find(temp)
If d Is Nothing Then
Cells(a, 53) = temp
a = a + 1
End If
Set c = Range("I:I").FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstadd
End If
End Function
我应该扔在,我不能搜索苛求,因为他们是相当长的部件号/描述(告诫即整列可能会像“000cheese AB”和“0cheese 00045”的条目。请问一个instr检查c.value部分是可以接受的吗? – Lzkatz
是的,只要使用'如果InStr(c.Value,“奶酪”)然后'而不是'如果c.Value =“奶酪”然后' – 2tsai
工作得很好,谢谢。 – Lzkatz