作者wkday (wkday)
看板Office
標題[算表] 按照選定的類型,執行不同的公式運算
時間Tue Feb 15 22:53:14 2022
軟體:Excel
版本:Office365
在做一個多項目的計價檔案,簡化後如下圖:
https://imgur.com/b5RtaEx
每個項目都可以由使用者選定計價方式,
每個「計價方式」都對應獨有的「計價公式」,
目前計價方式大概有十多種,之後還會繼續增加。
已知選定了「計價方式」後,可以用vlookup等方法找到對應的「計價公式」;
但目前卡在,不知道怎樣能按照「計價公式」來執行「運算」以計出金額。
所以想請教各位大大有沒有較好的辦法。
備註:
1.最終用家是其他同事,希望可以使用方便。
2.希望不要用到巨集或vba。
先謝謝各位!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.246.230.47 (澳門)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1644936796.A.DD2.html
1F:→ waiter337: [G2]==IFS(B2="a",D2*E2,B2="b",(C2+D2)/100,B2="c",C2 02/16 03:52
2F:→ waiter337: ,B2="d",C2+D2,B2="e",C2+D2+E2+F2) 02/16 03:52
3F:→ waiter337: ^多打一個= 從這個等號開始輸入 位於G2位置 02/16 03:53
4F:→ waiter337: 抱歉 沒看完題目 此方法不好用 02/16 03:54
5F:→ waiter337: 用 INDIRECT 搭配文字 02/16 04:06
6F:→ waiter337: 搭配row() 02/16 04:06
7F:→ waiter337: 後來研究一下 不可行 請高手救援=,= 02/16 05:01
8F:→ waiter337: 本來想用EVALUATE 但發現這是vba 02/16 05:02
9F:→ waiter337: EVALUATE 要用兩次 才能破row()的計算 02/16 05:17
10F:→ waiter337: google "excel EVALUATE" 設定名稱的時候 02/16 05:22
11F:→ waiter337: 要用兩次EVALUATE 搭配row()方法 與vlookup 應該有破 02/16 05:22
12F:→ waiter337: 解的方式 02/16 05:22
14F:→ waiter337: 29YINu5Dz_6SY--JTuDaJL4O9_XuA3?usp=sharing 02/16 07:50
15F:→ waiter337: 上面合起來 做的很勉強檔案不一定有用 望強者大大幫忙 02/16 07:50
17F:→ windknife18: G2 的公式可以使用 Ctrl+F3 查看 02/16 10:31
19F:→ windknife18: 加入自動更新機制 02/16 11:55
21F:→ rafaiero: 圖片左下G2=offect($a$1,match(b2,...才對 02/16 13:39
23F:→ rafaiero: 再重發一次 02/16 13:43
24F:→ wkday: 謝謝waiter337,windknife18和rafaiero三位,會好好研究看看 02/16 22:03
25F:推 kinomon: 想用offset和indirect(“RC”,0)結果卡在奇怪的地方== 02/17 03:10
27F:→ kinomon: H2是定義名稱 名稱公式是evaluate(I2) 02/17 03:12
28F:→ kinomon: 想請問是哪裡出錯呢 02/17 03:12
29F:推 waiter337: B3 不能有"" 02/17 11:45
30F:→ kinomon: 謝謝w大幫忙 但還是顯示錯誤 02/17 16:06
32F:→ kinomon: 試了offset沒有問題 請問是indirect哪裡還需要調整嗎 02/17 16:08
33F:→ kinomon: 名稱公式一樣 是對右方儲存格evaluate 02/17 16:09
34F:→ rafaiero: indirect(“b”&3) 02/17 22:05
35F:推 waiter337: 名稱管理員要用兩次evaluate 02/17 22:24
36F:→ waiter337: 我的檔案內有 =evaluate(evaluate(I2)) 02/17 22:24
37F:→ waiter337: 我模糊的解釋一下 因為我也不是完全清楚 02/17 22:25
38F:→ waiter337: 針對公式上 分為兩種 一種是參照查閱 一種是運算 02/17 22:27
39F:→ waiter337: 若你的公式內 同時都有 他只會優先處理 參照查閱的部分 02/17 22:27
40F:→ waiter337: 或者說 邏輯運算 只能執行一次 02/17 22:27
41F:→ waiter337: 所以 當你的公式內有邏輯運算+查閱參照的情況 02/17 22:28
42F:→ waiter337: evaluate無法一次處理 就必須給他再執行一次 02/17 22:28
43F:→ waiter337: 或者說 不能參照兩次 02/17 22:29
44F:→ waiter337: 這我沒弄很清楚 你必須自己實測 02/17 22:29
45F:→ waiter337: 你可以把indirect(b3) 再做第二組的evaluate 就能執行 02/17 22:30
46F:→ waiter337: 所以我用了兩組evaluate 02/17 22:30
47F:→ waiter337: 但這樣當下又會陷入一個奇怪的問題 02/17 22:30
48F:→ waiter337: 我的檔案當中就遇到一個 如果只有(b3) 用了兩次參照 02/17 22:30
49F:→ waiter337: 就會產生錯誤 02/17 22:31
50F:→ waiter337: 用兩次evaluate 就會錯誤 02/17 22:31
51F:→ waiter337: 因為他被(b3) > 值 > 執行錯誤 02/17 22:31
52F:→ waiter337: 這時候 就要給他來個 0+(b3) 讓她不只有參照 還多運算 02/17 22:32
53F:→ waiter337: 那就能正常做兩次計算 02/17 22:32
54F:→ waiter337: 所以windknife18的寫法非常厲害唷 02/17 22:32
55F:推 kinomon: 謝謝w大解說 02/18 00:07
56F:→ kinomon: 晚上爬了一些關於這兩個函數互動的文章沒什麼收穫 確實只 02/18 00:07
57F:→ kinomon: 能多嘗試 02/18 00:07