Excel 如何用一變數欄,間接隨時更改公式內限制條件?

2015-04-13 11:23 pm
問題:如何用一變數欄,間接隨時更改公式內限制條件?


詳細問題內容:
當C2欄的號碼為M2:M100任一個時,則去比對D2欄,
若不是M欄號碼或空白就無需比對;
從N欄示意圖得知,號碼L444444的D2欄規則必須為
第2碼必須為9、第6碼必須為大寫T,其他碼不限制,
若違反則在E2欄顯示"錯誤"兩字。

另外,使用者能隨時在O欄(變數欄)修改批號條件,
假設把O4欄的"9T"改為"S1",意即號碼L444444
的D2欄規則隨之變為第2碼必須為大寫S、第6碼必須為1。

我知道每個號碼的批號規則不同,公式應該就會不一樣,
所以有勞大大只需幫我寫L444444和L888888的公式就好,
然後大致幫我說明一下公式內 批號位數限制 修改的地方,
其他號碼我在自己練習即可!

最後,我比較有問題的地方其實是變數欄的這種手法而已,
如果公式執行上有甚麼問題也請大大建議我一下,例如
變數欄是否要欄位分開寫號碼,公式才有辦法寫出來等等的..,
以上就有勞大大幫解題,在此先謝謝囉!


下載說明檔
http://www.FunP.Net/547913

回答 (3)

2015-04-16 10:21 pm
✔ 最佳答案
M欄星號全部取代成問號: ~* →取代成 ?
每個字串的字元數19個(含問號)

E2:
=IF(ISERR(SEARCH("_"&VLOOKUP(C2,M:N,2,)&"_","_"&D2&"_")*FIND(UPPER(D2),D2)),"錯誤","")

2015-04-14 12:07:44 補充:
E大比對方式較完整,005參考即可!

2015-04-15 09:51:03 補充:
N欄〔星號〕必須全改為〔問號〕,且字元數為19個,
005打錯了,不是M欄~~

2015-04-15 12:06:54 補充:
<參考檔>:
http://www.funp.net/20203

若編碼是英文大小寫混合,則本公式無法使用,
可用e大的方法~~

2015-04-16 14:21:56 補充:
EXCEL.依指定字元位置及指定文字,檢查輸入批號是否錯誤
                        <.准提部林.>
--------------------------------
■批號規則對照表:M&N欄 號碼區批號規則L111111?17A???????????????L222222AF?JJ??Q?????7??????L444444?9???T?????????????L888888ADEWFGTR???????????L666666B?B??DEDCDE????????? 
■批號輸入及檢查表:C.D.E欄 號碼批號公式L44444419345T789 56789 L44444419345%789 56789錯誤L44444418345T789 56789錯誤 18345,789 56789 L888888ADEWFGTR1-5 47841 L888888*DEWFGTR125 47841錯誤L888888 DEWFGTR125 47841錯誤L888888ADEMFGTR125 47841錯誤 
■公式.E2:
 =IF(ISERR(SEARCH("_"&VLOOKUP(C2,M:N,2,)&"_","_"&D2&"_")*FIND(UPPER(D2),D2)),"錯誤","")
--------------------------------
<範例檔>:
檔案名稱:20150415a01(限定編號輸入規則).rar
下載位址:http://www.funp.net/20203
--------------------------------
2015-04-14 10:59 am
謝謝迷大回答,想確認一下,您的公式是不是少於19碼就無條件判斷錯誤,大於19碼以上只要限制的碼數正確,就算後面多好幾碼也沒差是不是?

以上,我只是好奇問問而已,其實不影響我的需求,在目前看來,您公式還算符合我的需求,就待我到公司實際測試了!

2015-04-14 23:26:36 補充:
兩位高手一個比一個客氣,這幾天比較忙,不過我會盡量抽空檔測試公式,到時再通知上答唷!^_^

2015-04-15 00:05:09 補充:
剛發現 准大 的解答有個問題,以L444444為例,我在批號前面插入任一個號碼來打亂位數,正常應該顯示錯誤,但 准大 的沒顯示。

2015-04-15 21:13:26 補充:
我都只會有大寫的需求,所以請 准大 先幫我上答唷!也非常感謝迷大用心幫我設計的公式,不過個人還是偏愛簡潔為主。XD


另外請教一下 准大 ,如果M欄有兩個相同號碼,那它是會以上面的為主對吧?
不知道公式是否能做到多個相同號碼,多個都能為主,如果可以的話,我在想再另開題目求解。QQ

最後,真的很謝謝兩位。
2015-04-14 1:33 am
輔助 假設為L2欄=IF(C2="","",IFERROR(INDEX(N:N,MATCH(C2,M:M,)),""))
下繼續

2015-04-13 17:34:07 補充:
=IF(OR(C2="",L2=""),"",IFERROR(IF(SUMPRODUCT((MID(L2,ROW($1:$19),1)<>"*")*(CODE(MID(D2,ROW($1:$19),1))=CODE(MID(L2,ROW($1:$19),1))))=LEN(SUBSTITUTE(L2,"*",)),"","錯誤"),"錯誤"))

2015-04-14 16:55:39 補充:
又給 "准大" 上了一招 ,前後加 "-"連接 ,用SEARCH,可不用考慮 " * " 的位置
還是請 "准大" 上答


收錄日期: 2021-04-27 21:45:45
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20150413000010KK03645

檢視 Wayback Machine 備份