我還不熟悉在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