Board logo

標題: [發問] keyword的條件若達2種以上,該如何建立語法? [打印本頁]

作者: keny1021    時間: 2022-7-22 13:40     標題: keyword的條件若達2種以上,該如何建立語法?

請問下列語法,keyword的條件若達2種以上,該如何建立語法?麻煩賜教,感謝。
Sub BBB()
keyword = "AW1"      
For i = 7 To 26
    If Cells(i, 1) Like "*" & keyword & "*" Then   
        Cells(i, 3) = ""
        Cells(i, 4) = ""
        Cells(i, 5) = ""
        Cells(i, 6) = ""
End Sub
作者: samwang    時間: 2022-7-22 16:14

請問下列語法,keyword的條件若達2種以上,該如何建立語法?麻煩賜教,感謝。
Sub BBB()
keyword = "AW1"  ...
keny1021 發表於 2022-7-22 13:40


不好意思,看不出需求為何? 請問方便附上檔案且說明一下,謝謝
作者: keny1021    時間: 2022-7-22 17:28

回復 2# samwang


您好:補上附件.麻煩您
作者: samwang    時間: 2022-7-22 19:45

回復  samwang


您好:補上附件.麻煩您
keny1021 發表於 2022-7-22 17:28

A欄關鍵字有AW1及AW2時讓C:F欄資料為空白
將keyword = "AW" 即可,謝謝
作者: keny1021    時間: 2022-7-25 10:02

回復 4# samwang


您好:謝謝回覆。

若新增BW2作為關鍵字的條件,這樣要如何呈現結果呢? 再麻煩了
作者: samwang    時間: 2022-7-25 10:38

回復  samwang


您好:謝謝回覆。

若新增BW2作為關鍵字的條件,這樣要如何呈現結果呢? 再麻煩了
keny1021 發表於 2022-7-25 10:02


用您原來的修改如下,謝謝
另外建議,資料多時可以將資料裝到數組,這樣效率比較快

Sub BBB()
keyword = "AW"
keyword2 = "BW1"
For i = 7 To 26
    If Cells(i, 1) Like "*" & keyword & "*" Or Cells(i, 1) Like "*" & keyword2 & "*" Then
        Cells(i, 3) = ""
        Cells(i, 4) = ""
        Cells(i, 5) = ""
        Cells(i, 6) = ""
End If
Next
End Sub
作者: samwang    時間: 2022-7-25 11:13

回復 5# keny1021

用數組方式,請測試看看,謝謝
Sub test()
Dim Arr, T$, i&, j%
Arr = Range([f7], [a65536].End(3))
For i = 1 To UBound(Arr)
    T = Arr(i, 1)
    If InStr(T, "AW") Or InStr(T, "BW1") Then
        For j = 3 To 6: Arr(i, j) = "": Next
    End If
Next
Range("a7").Resize(UBound(Arr), 6) = Arr
End Sub
作者: Andy2483    時間: 2022-7-26 12:33

回復 7# samwang


    請教前輩
1.Arr = Range([f7], [a65536].End(3))
2.Arr = Range([a7], [f65536].End(3))

這兩種語法匡列儲存格的範圍都一樣,一般都用第2種方式
為什麼前輩用第1種方式?
有什麼特殊意義嗎?

謝謝前輩!
作者: samwang    時間: 2022-7-26 13:17

回復  samwang


    請教前輩
1.Arr = Range([f7], [a65536].End(3))
2.Arr = Range([a7], [f65536] ...
Andy2483 發表於 2022-7-26 12:33


如您說的都一樣,只是考慮是以a欄為主而這樣寫而已,謝謝
作者: Andy2483    時間: 2022-7-26 14:03

回復 9# samwang


    謝謝前輩指導
Arr = Range([a7], Cells([a65536].End(xlUp).Row, "f"))
以前都用這樣的方式來確保定義的儲存格範圍,不會因為[b7:f26]儲存格資料變動而異動

以a欄為主的意思是
a欄是標題欄,所以a欄的最後列數通常會等於整個工作表最後列數,
所以用的右上到左下的方式匡列
是這意思嗎?
作者: samwang    時間: 2022-7-26 14:59

回復 10# Andy2483


  以a欄為主的意思是
a欄是標題欄,所以a欄的最後列數通常會等於整個工作表最後列數,
所以用的右上到左下的方式匡列
是這意思嗎?
>> 是的,這只是後學一些習慣不見得是個好的方法,謝謝  
作者: Andy2483    時間: 2022-7-26 15:28

回復 11# samwang


    謝謝前輩指導!
您太客氣了!
作者: 准提部林    時間: 2022-7-26 16:27

回復 10# Andy2483


一個表格, 通常會有一個[主索引]欄,
內容也許是編號, 日期, 或序號, 它須有某些特性...不重覆, 或不間斷(即中間不允許空白行),
因此以這一欄檢測最後一行非空位置, 以定出整個表格的資料範圍~~

習慣上, 通常在表格左方第一欄, 若有其它情形, 則依實際修改即是!!!
作者: 准提部林    時間: 2022-7-26 16:35

本帖最後由 准提部林 於 2022-7-26 16:37 編輯

回復 5# keny1021


如果像範例中這麼有規律, 將文字分拆比對即可~~~
如:品項(AW1)....利用括號拆出AW1
再用INSTR("/AW1/AW2/BW1/", "/AW1/") 比對,
為何要用 "/"前後包覆?  防止  AW15 及 AW1 的誤判~~
如 :INSTR("/AW15/AW8/BW9/", "AW1")  這個就會有錯誤(被找查文字中沒有AW1, 而是AW15)

這個用字典也可以~~

若是再複雜些, 可能要用"正則", 但那是非不得已而用之
作者: Andy2483    時間: 2022-7-26 16:46

回復 13# 准提部林


    謝謝前輩指導!
作者: keny1021    時間: 2022-8-4 18:10

謝謝前面各位前輩提供這麼多的方法及指導




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