返回列表 上一主題 發帖

[發問] 字串中沒有包含某字元用法

[發問] 字串中沒有包含某字元用法

平時我們寫VBA 要找出關鍵字用法都會用Like
  1. If .Cells(i, "A") Like "*AAA*"  Then
  2. .Rows(i).Delete
複製代碼
A欄位 有AAA字串則刪除

如果我要改成 如果A欄位 有AAA字串保留

其餘沒有的刪除怎麼寫呢??

If .Cells(i, "A") Like "*AAA*"  Then
下一段???? 其餘刪除

回復 1# v03586

If .Cells(i, "A") Like "*AAA*"  Then
改為
If InStr(.Cells(i, "A").Value, "AAA") = 0 Then

用InStr函數,可做為字串比對的判斷:
若判斷式等於0表示沒有符合資料,反之(<>0)則表示有符合的資料

InStr函數的使用法請參照VBA的官方說明
[b]Kubi[/b]

TOP

Like 判斷結果為 True 或 False,
反向, 則可改為
If .Cells(i, "A") Like "*AAA*" = False  Then .Rows(i).Delete

If Not .Cells(i, "A") Like "*AAA*"  Then .Rows(i).Delete

平常習慣用 InStr , 其用法與工作表函數 Find 類似, 只是其參數相反:
=Find(關鍵字, 被比對字串)
SS = InStr(被比對字串, 關鍵字)

Like 另個好處, 可以更多方式模糊比對,
例如:
"AAA*"
"*AAA"
"AAA*B"

TOP

回復 3# 准提部林


    這樣這行的意思會變成假如A欄位沒有AAA 就刪掉嗎?
我跑程式時...變成全部刪光光@@
我想表達的意思是...保留如下關鍵字的部分  其餘反黃部分刪除..
Q2.png
  1.      For i = .Range("A65536").End(xlUp).Row To 2 Step -1
  2.         If Not .Cells(i, "A") Like "*AAA*" Or _
  3.            Not .Cells(i, "A") Like "*BBB*" Or _
  4.            Not .Cells(i, "A") Like "*CCC*" Or _
  5.            Not .Cells(i, "A") Like "*DDD*" Or _
  6.            Not .Cells(i, "A") Like "*EEE*" Or _
  7.            Not .Cells(i, "A") Like "*FFF*" Then
  8.             .Rows(i).Delete
  9.         End If
  10.      Next
複製代碼

TOP

回復 4# v03586

OR 任一
AND 全部

多條件要確認用哪一個?

TOP

回復 5# 准提部林


    了解了!!!感謝指點!! 原來是這個小細節...!!!

TOP

        靜思自在 : 為人處世要小心細心,但不要「小心眼」。
返回列表 上一主題