看板 Office 關於我們 聯絡資訊
軟體: Office Excel 版本: 2013 我有個需求,需要將字串內容視為運算內容,例如: Debug.Print 某種語法(“1 = 1”) 結果要得到 True 會有這個需求是因為字串內容是隨機的,不限制有幾項判斷,也不限定And或Or, 所以希望可以整理成單一字串後進行判斷。 自串可能會是: A Or B and C Or D Or E … 以上,還請各位高手協助,感激不盡! 手機提問,排版不佳請見諒 -- ┌─────────────────────────────┐ 就這樣,終於到了啟程的日子。 和來機場送行的朋友們說著玩笑話,其實內心恍恍惚惚像在作夢。 也似乎是因為,為了走到「出發」這一步,耗盡了全部心力。 └─────────────────石田裕輔《不去會死!》─┘ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.4.74 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1621310220.A.389.html
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