Google sheets 带通配符的VLOOKUP并找到第n个实例?
我正在建立一个谷歌表格,计算特定农业投入(化肥、化工等)的最有效购买量。我在自己的选项卡中设置了价格数据,每个输入名称+大小都有一个单独的行 为了方便用户,我只需要输入名称、每英亩加仑数和英亩数,然后用公式计算出总成本和最有效的购买量(批量大于X加仑、X个250加仑容器+X 55桶等)。如何使用输入名称加上通配符来查找合适的购买大小 我试过:Google sheets 带通配符的VLOOKUP并找到第n个实例?,google-sheets,google-sheets-formula,gs-vlookup,Google Sheets,Google Sheets Formula,Gs Vlookup,我正在建立一个谷歌表格,计算特定农业投入(化肥、化工等)的最有效购买量。我在自己的选项卡中设置了价格数据,每个输入名称+大小都有一个单独的行 为了方便用户,我只需要输入名称、每英亩加仑数和英亩数,然后用公式计算出总成本和最有效的购买量(批量大于X加仑、X个250加仑容器+X 55桶等)。如何使用输入名称加上通配符来查找合适的购买大小 我试过: =ArrayFormula(iferror(INDEX('Data (Current)'!H2:H,SMALL(IF($A2&"*"='Data
=ArrayFormula(iferror(INDEX('Data (Current)'!H2:H,SMALL(IF($A2&"*"='Data (Current)'!A2:A,ROW('Data (Current)'!A2:A)-1),1))))
…但它返回空白,因此我猜测输入名称的引用$A2&“*”
工作不正常。当我用“数据(当前)”选项卡中的字符串替换它时,它工作正常
=ArrayFormula(iferror(INDEX('Data (Current)'!H2:H,SMALL(IF($A2&"*"='Data (Current)'!A2:A,ROW('Data (Current)'!A2:A)-1),1))))
我希望输出是最小的值(在本例中,我认为是5
)。然后,当我将最后一个数字更改为2
或3
时,它将找到下一个最小值,在本例中为55
或250
。然后我可以使用简单的公式与之交互并完成电子表格
不幸的是,实际输出是空的,或者说,
“
”很抱歉,如果这不是您想要的,因为我在理解您的问题时遇到了一些困难
假设你想要什么本质上是这样的:
我想买Y数量的商品
如果我购买的数量更多,我可以以更低的价格购买,尽管有时他们有最低订购量
为了使我付出的代价最小化,我所拥有的选项的最佳组合是什么
我不确定是否有一个简单的解决方案,这在谷歌表单单独。这可能会更多地进入应用程序脚本领域
然而,这并不是说这不是不可能的。对于“螯合钙”产品,我已经用类似迭代的方法“强制”了上述解决方案:
- 产品通用名称-使用此名称可以轻松找到不同数量的所有项目,而不需要通配符
- 加仑-如果数据是显式排列的,那么解析数据就容易多了
- 最低订购加仑-这是您的批量阈值。我已经将螯合钙的浓度设定为任意20000加仑
MATCH
函数得到了这些结果- 迭代位于字段级工具选项卡的右侧
- 在您的情况下,您可能希望将其放在另一个选项卡上,因为我放置它的位置使文件看起来非常混乱
- 为了实现-这个迭代还需要购买多少加仑
- ThisIndex-此迭代的行号是多少?这是由最有效的索引-迭代次数决定的。请记住,由于我们按照效率提升的顺序进行排序,这意味着迭代从它能首先找到的最有效的选项开始。有一个检查,以确保它仅在介于范围[最低效率索引,最高效率索引]之间时输出一个值。否则,它将为空,以避免侵入数据(当前)选项卡中的另一个产品而导致计算错误
- 零售价格、最低GAL、每份订单的加仑数-简单的数据提取,便于在迭代中使用,使用
(间接地,借助此索引,索引
)匹配
- 顺序-此公式有两个作用,概述如下:
- 它检查在这个迭代中是否仍然存在有效的产品选择。它通过检查该索引是否仍然存在来实现这一点。如果产品不存在,那么它将为空。这是通过使用
功能实现的IF
- 它将确定购买此选项是否必须满足最低阈值。例如,您可以在第0次迭代中看到,最低量为20000加仑。如果要完成的数量大于或等于阈值或没有阈值,则此列将对采购进行量化。数学只是将完成量除以每订单量的加仑数,以确定这一特定产品选择的订单数量。如果存在一个阈值,但要完成的数量不满足该阈值,则使用0订单值跳过此迭代
- 如果项目已处于其最低有效期
- 它检查在这个迭代中是否仍然存在有效的产品选择。它通过检查该索引是否仍然存在来实现这一点。如果产品不存在,那么它将为空。这是通过使用