Board logo

標題: [發問] 字串中沒有包含某字元用法 [打印本頁]

作者: v03586    時間: 2016-4-17 02:41     標題: 字串中沒有包含某字元用法

平時我們寫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
下一段???? 其餘刪除
作者: Kubi    時間: 2016-4-17 08:51

回復 1# v03586

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

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

InStr函數的使用法請參照VBA的官方說明
作者: 准提部林    時間: 2016-4-17 10:12

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"
作者: v03586    時間: 2016-4-17 11:34

回復 3# 准提部林


    這樣這行的意思會變成假如A欄位沒有AAA 就刪掉嗎?
我跑程式時...變成全部刪光光@@
我想表達的意思是...保留如下關鍵字的部分  其餘反黃部分刪除..
[attach]23887[/attach]
  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
複製代碼

作者: 准提部林    時間: 2016-4-17 12:52

回復 4# v03586

OR 任一
AND 全部

多條件要確認用哪一個?
作者: v03586    時間: 2016-4-17 13:01

回復 5# 准提部林


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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)