2009-08-07 167 views
0

我有一個像如何將字符串通配符模式在Excel宏匹配

LEFT('F13',2)='F1' 

測試我想從左側的比賽更改爲支持通配符

'F13'='F?3' 

測試Excel不支持除VBA代碼外的正則表達式,但我更喜歡這是在宏中完成的。我要指出的是,實際測試是不是一個簡單的字符串,但單元格引用(這可能是重要的,我不知道):

IF(LEFT($DATA.$A$2:$A$1501,LEN($B$3))=$B$3,... 

範圍實際計算結果爲單細胞基礎上的地方宏被調用。 $ B $ 3是用戶輸入的模式。

+0

「Excel不支持除VBA代碼外的正則表達式,但我更喜歡這是在宏中完成的。」我很困惑:宏是用VBA代碼編寫的。你的意思是說你更喜歡純粹的工作表函數/公式嗎? – devuxer 2009-08-07 20:40:06

+0

我越來越喜歡訪問我認爲'宏'與'VBA函數'不同的地方。我的意思是一個公式是。 – SpliFF 2009-08-08 05:10:46

回答

0

= SEARCH( 「F 3?」, 「F13」)= 1

在你的第二個例子,如果B3包含注入文本通配符

= SEARCH(B3,$ DATA $ A $ 2: $ A $ 1501)= 1

SEARCH返回找到第一個參數的位置。 「= 1」確保字符串以第一個參數開始,而不是中間的某個地方。我不確定你的$ DATA參數是如何工作的,所以我只是逐字地複製它。

+0

$ DATA是由於從Open Office(將公式轉換爲StarBasic)複製函數而導致的錯字。它應該說數據!因爲它是一個工作表參考。 – SpliFF 2009-08-08 05:13:50

+0

此解決方案因搜索未找到字符串時引發#VALUE錯誤而失敗。這打破了整個公式。與FIND一樣。有沒有辦法測試#VALUE? – SpliFF 2009-08-08 05:51:56

+0

沒關係。 IF(NOT(ISERROR(FIND($ B $ 3,DATA $ $ A $ 2:$ A $ 1501)= 1))) – SpliFF 2009-08-08 05:56:29