大家好,这一招给大家分享一个比较有意思的案例,这个案例也是来自于一个粉丝同学的提问,他的问题是这个样子的。这边会有一张运费表格,比如某一些商品的运费标准是零到五公斤,运送到各个省份所对应到的单价是五到十公斤,下方是十到十五公斤。
现在想要去找到最后的总价应该如何去进行计算?首先这个位置如果是区间就一定会牵涉到会用到近似匹配,并且在这个过程中间还会遇到地址,注意在这一列当中会有一些地址是属于山东,这个位置是属于四川,前面和后面会有一些其他的具体的文字明细,所以应该如何来进行价格的计算?
大家先跟上我的思路,先讲完,最后再去做一个总结。
·首先既然会要用到近似匹配,必然需要把重量部分去做一个分解,这边可以来写到零,下方可以来写到五,下方可以ctrl加上e去进行智能填充,当然可以使用到函数去做了。
·零到五公斤所对应到的单价是来自于这行,五到十公斤是来自于这行,所以其实这个位置所用到的函数也就是index函数加上match函数的近似匹配,包括这边还有一个关键字的查找部分的融合。
·所以大家看好,首先可以来写到等于index函数范围一定是来自于整个价格明细范围当中。
·然后再来做match,match哪个?match重量,首先在index参数中间的第二个参数所找到的是行的位置,所以可以来match当前的重量在哪个位置?match在重量这一列当中去进行matchf4,绝对用这个去由于所做的是近似匹配,所以直接可以来给到括弧,就不需要在后面再去补充零了。
·这个就可以确定所在的行位,现在如果直接给到确定,可以看到输出结果,到这边先给上一个逗号,两公斤,其实所对应到的也就是两公斤在零到五公斤之内,所以其实是取得这一行的内容。如果把这边给变到是六公斤,就会变成是第二行的数据。
·再看接下来还需要去找到这些地址,这个地址前面和后面会有一些其他相关的文字,所以这个位置必然会要去做到类似于关键字的查找之类的。
·所以其实如果这边是山东,刚才在,已经可以给到这个行位了吗?在这行当中可以找到山东所出现的列位,就可以把单价、可以把它给调取过来。
所以问题就是应该如何去做?首先在旁边先把函数给大家去做分解,可以来写到等于翻译的函数,翻译的哪个?find的,整个这一行当中f4绝对用它。然后在当前的单元格当中去进行find,山东会出现在第一个位置,因为是find的中间的每一个地址,在当前的单元格当中去进行万达。
如果可以用山东,比如这个位置如果是翻译的山东,在刚才的文字框当中所出现的位置就是第三个位置,后面都是y6错误,就证明后面不存在,有内容是属于单元格当中内容,所以只要找到但凡会出现数值的位置,比如把这个位置换成是云南,云南就会出现在第二个位置,所以要的就是具体数值所出现的位置。
接下来可以来做一个判断,it'snumber,当它为数值则为处,当它不为数值则为force,value错误的部分都会变成force,所以其实想要找到就是这个处所出现的位置,所以可以再来做个match,matchto,然后在刚才的内容当中去进行翻译的零,精确匹配括号回来确定,这个时候云南就出现在整个刚才所选择范围当中第二个位置。
如果现在把湖北换过来,大家自己可以看一下,湖北就会出现在第三个位置,所以这个样子已经有了这一行具体内容,再给到一个具体的列位就可以缩影得到最后的结论,所以这个时候可以把公式去做一个复制,然后选择把它给贴在立所在的位置,然后回车,这个就是所得到的单价了。
得到单价之后,接下来用单价再去乘以前面的重量就等于整个的价格,再去多一个双击下拉,这个就是最后的结论。