如何在一個單元格中使用instr搜索多個字串值?
現在我有這樣的東西,但它又長又亂。我需要查看單元格中是否包含X1或G
If [InStr(1, ws. Range("a"/span> & k), "x1"/span>) or InStr(1, ws.Range("a" & k), "G") ] And ws.Range("G" & k) = "Lintel" Then
k = k 1
ElseIf (InStr(1, ws. Range("a" & k), "x1") = False) And (ws.Range("G"/span> & k) = "Lintel") 然后
gfexternallintels.Range("B" & (j)).Value = ws.Range("A" & k) .Value
j = j 1 "A" & k.Value
End If
uj5u.com熱心網友回復:
(1) Instr的第一個引數是可選的,如果你省略它,會使代碼更容易閱讀。
(2) InStr回傳的是一個整數,而不是一個布爾,你應該檢查它的數值,而不是True或False(你的代碼不應該依賴于True和False的內部實作)
。
(3) 沒有,沒有一個內置的函式可以同時檢查多個字串。你可以自己寫一個函式,獲得一個陣列作為第二個引數("針"),并在其中回圈。
(4) 你應該避免多次訪問同一個單元。
(5) 如果你想避免混亂的代碼,請分割任務。將中間值寫入區域變數中。
一種嘗試(有很多不同的方法,這是個人品味的問題)
Dim isX1 As Boolean, isG As Boolean, isLintel As Boolean.
isX1 = (InStr(ws.Range("A" & k), "x1") > 0)
isG = (InStr(ws.Range("A"/span> & k), "G"/span>) > 0)
isLintel = (ws.Range("G"/span> & k) = "Lintel"/span>)
If (isX1 Or isG) And isLintel Then。
(...)
ElseIf Not isX1 And isLintel Then <...
(...)
uj5u.com熱心網友回復:
我找到了一個使用ifs的方法
If InStr(1, ws. Range("a" & k), "x1") And ws.Range("G" & k) = "Lintel" Then
k = k 1
ElseIf InStr(1, ws.Range("a"/span> & k), "G"/span>) And ws.Range("G" & k) = "Lintel" Then
k = k 1
ElseIf (InStr(1, ws. Range("a" & k), "x1") = False) And (ws.Range("G"/span> & k) = "Lintel") 然后
gfexternallintels.Range("B" & (j)).Value = ws.Range("A" & k) .Value
j = j 1 "A" & k.Value
End If
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307531.html
標籤:
上一篇:移動多列
下一篇:匹配不同后綴和后綴的運算式
