→ soyoso: 內文寫到的某種語法,可以用evaluate,如debug.print 05/18 12:28
→ soyoso: evaluate("1=1") 回傳true,看是否可以應用到實際字串內, 05/18 12:28
→ soyoso: 有可能會需要調整寫法 05/18 12:28
→ foolkids: 謝謝so大,目前 And Or沒問題了,但是好像無法處理Like 05/18 12:43
→ foolkids: ,有建議的方式嗎?在考慮是不是用Instr當替代方案… 05/18 12:43
→ foolkids: 哎呀,我搞錯了,And Or也不行,好像只能是= <>這種符號 05/18 12:46
→ foolkids: … 05/18 12:46
→ foolkids: 想說先問問看so大,沒有的話可能就要自己寫Function來處 05/18 12:47
→ foolkids: 理了 05/18 12:47
→ soyoso: and和or也是可以,只是寫法要調整,如"and(1=2,1=1)","or 05/18 13:00
→ soyoso: (1=2,1=1)",會類似工作表函數的寫法 05/18 13:00
→ foolkids: 謝謝!那Like有解嗎?一般工作表的寫法沒有Like,都是用 05/18 13:02
→ foolkids: Find() > 0 … 05/18 13:02
→ soyoso: 如果可以調整為工作表函數的find的話,寫法如"find(""a"", 05/18 13:11
→ soyoso: ""daef"")>0" 05/18 13:11
謝謝so大的協助,後來用了新增一個function來解決這個問題:
https://imgur.com/a/qXgUwiZ
這樣就可以在Evaluate中使用Like功能
※ 編輯: foolkids (36.228.85.128 臺灣), 05/19/2021 08:20:56
推 waiter337: 好酷 想請教運用場景 05/19 19:36
→ waiter337: 因為我可能思維固化了 05/19 19:37
→ waiter337: 這個方式 可以替代那些方式 或者說 你遇到甚麼狀況 05/19 19:37
→ waiter337: 然後選擇這種方式 05/19 19:38
我的使用場景是這樣:
1. 維護者Key-in篩選條件,例如:"IsLike([欄位A],""A*"")"
2. 程式後續將中括號[]裡的欄位A轉換成特定資料,例如 "A0312"、"A1130"、"B0050"..
我實際上的場景是一張大表跑迴圈,大表的標題是欄位A~欄位H。
迴圈每列執行時,都替換中括號內的字串(第n列的欄位A),等後續送去Evaluate判斷
3. 所以篩選條件本來是"IsLike([欄位A],""A*"")" 會變成
"IsLike("A0312",""A*"")",送去Evaluate判斷後就可以知道每列是否符合篩選條件
4. 篩選條件可能會依據狀況而改變,使用者只要維護字串就好,不用動程式碼,
例如我條件可能會先判斷索取資料的人,決定條件為
a."IsLike([欄位A],""A*"")" 或
b."IsLike([欄位A],""B*"")" 或更複雜,想要
c."OR(AND([欄位B] > "10", IsLike([欄位A],""C*""), IsLike([欄位A],""D*"")"
如此一來就可以用同一段程式碼進行動態邏輯變更
※ 編輯: foolkids (220.137.31.203 臺灣), 05/20/2021 19:31:04