作者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/cn.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