
Excel中如何实现查表并匹配公式?
需求:以表1为参考,算出表2黄色部分的值。
例如:A8为AAAA,对应表1第二行,D8的值套用D2的公式,将B2换成B8,得到值2.057.
不要VBA或者编程语言,想简单实现,只用公式,请教。 展开
2019-05-14 · 知道合伙人软件行家

如果公式的个数不是很多,用定义名称或公式都还比较容易弄,但如果公式很多的话,就有些麻烦,倒不是怎么难,而是繁冗。相对来说,直接公式法还可简单些。
先说宏表函数法,将光标定位到用输入公式的单元格,定义名称,名称最好与A列对应或直接用A列的内容,引用单元格中即复制粘贴单元格中的公式的内容,根据需要可在列标前加上符号$,这样以后引用名称就会在一行中任何位置都会引用加了列标的列数据,如$B,无论在D列还是E列或其他列,得到结果都是引用B列的数据进行计算。如图定义了4个名称。
然后在要引用公式的地方用下面的公式:
D8=CHOOSE(VLOOKUP(A8,IF({1,0},A$2:A$5,{1;2;3;4}),2,),AA,BB,CC,DD)
再说直接公式法,如果如提问截图所示,不同的公式仅是公式中的系数(与引用单元格有相乘关系)和常数(与引用单元格为加减关系)不同,公式的结构形式一致的话,直接用公式还是比较简单的,如图,用两个vlookup分别得到A列对应的系数和常数,再代入公式即可:
E8=VLOOKUP(A8,IF({1,0},$A$2:$A$5,{0.11;0.58;0.52;0.5}),2,)*(B8*0.9-VLOOKUP(A8,IF({1,0},$A$2:$A$5,{0.2;0.1;0.1;0.1}),2,))
可见两种方法的结果完全一致。
如果公式数据少,像上面一样直接在公式中列出系数和常数也不算太费时。但如果要引用的公式很多的,这样的方式就显得很笨拙了。这时可用FORMULATEXT把已列出的公式内容提取出来 ,再用文本函数把系数和常数分别提出来,公式中的VLOOKUP就可以去引用提取的数据列了。公式会简洁得多。
你好,很高兴能为你解答。
你这个可以将你E列的公式把等号去掉,然后再用文本公式函数evaluate和提取字符串函数和VLOOKUP函数组合来完成
如果你的是WPS的话就可以直接使用evaluate函数,如果不是的话,就需要使用公式里面的名称管理器来设置
公式如下:
=EVALUATE(LEFT(VLOOKUP(A8,$A$2:$D$5,4,0),FIND("B",VLOOKUP(A8,$A$2:$D$5,4,0)))&ROW()&"*"&RIGHT(VLOOKUP(A8,$A$2:$D$5,4,0),FIND("0.9",VLOOKUP(A8,$A$2:$D$5,4,0))-2))
效果图如下
最后效果图如下
在车上,手机操作真恼火
望采纳,谢谢!
车上回答,非常感谢!
使用Excel,evaluate无法使用... 使用了定义函数,参考第一个回答。
当AAAA/BBBB/CCCC/DDDD不止4类,if语法会很长,不好管理。希望通过查表A2到D5,
调用对应的函数名,直接得到值。请问还有什么技巧吗?
把原本的公式使用数据-分列-下一步-文本,把公式改为文本后,在进行一次分列,把数据分列出来再做
谢谢。
当AAAA/BBBB/CCCC/DDDD不止4类,if语法会很长,不好管理。希望通过通过查表A2到D5,算出值。
尝试定义完函数后,使用vlookup,只能返回函数的名字... 有什么技巧返回值吗?
查找函数返回的基本上都是值吧。返回公式可能有其他方法或是vba,但是我不会。希望其他大大能给你满意的解答。
=IFERROR(LOOKUP(A8,$A$2:$A$5,{0.11,0.58,0.52,0.5})*(B8*0.9-0.1*(1+(A8=$A$2))),"")
复制并下拉,即可。