Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 带通配符的VLOOKUP并找到第n个实例?_Google Sheets_Google Sheets Formula_Gs Vlookup - Fatal编程技术网

Google sheets 带通配符的VLOOKUP并找到第n个实例?

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

我正在建立一个谷歌表格,计算特定农业投入(化肥、化工等)的最有效购买量。我在自己的选项卡中设置了价格数据,每个输入名称+大小都有一个单独的行

为了方便用户,我只需要输入名称、每英亩加仑数和英亩数,然后用公式计算出总成本和最有效的购买量(批量大于X加仑、X个250加仑容器+X 55桶等)。如何使用输入名称加上通配符来查找合适的购买大小

我试过:

=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数量的商品

如果我购买的数量更多,我可以以更低的价格购买,尽管有时他们有最低订购量

为了使我付出的代价最小化,我所拥有的选项的最佳组合是什么

我不确定是否有一个简单的解决方案,这在谷歌表单单独。这可能会更多地进入应用程序脚本领域

然而,这并不是说这不是不可能的。对于“螯合钙”产品,我已经用类似迭代的方法“强制”了上述解决方案:

  • 首先,以标准化的方式列出数据。这包括给每个相同的产品提供一些易于查找的东西。例如,在数据(当前)选项卡上,我添加了3列:
    • 产品通用名称-使用此名称可以轻松找到不同数量的所有项目,而不需要通配符
    • 加仑-如果数据是显式排列的,那么解析数据就容易多了
    • 最低订购加仑-这是您的批量阈值。我已经将螯合钙的浓度设定为任意20000加仑
  • 此处的数据排序为最不有效的第一位。如何做到这一点将取决于你。在本例中,我根据表中的每盎司零售成本参数进行排序,最高优先。这消除了关于哪些选项最有效的猜测,因为您可以按顺序遍历选项注意:我列出公式的方式只有在相同的产品彼此相邻时才有效。如果他们之间有其他产品,这将不起作用。
  • 在“现场级工具”选项卡上,标准化加仑单位的输入。我在需要的总加仑列中这样做(我用“GAL”乘以1,“QUART”乘以0.25)
  • 对于每个项目,确定产品开始和结束的行号。这是由L列(最低效率索引)和M列(最高效率索引)标记的。我使用
    MATCH
    函数得到了这些结果
  • 设置迭代,从0到N-1。在这张表上,我设置了N=5次迭代,这意味着它只能遍历同一产品的5个不同选项。由于螯合钙只有4种不同的选择(5加仑,30加仑,250加仑,散装),5个就足够了。如果您有更多选项的产品,您可能希望有更多的迭代。
    • 迭代位于字段级工具选项卡的右侧
    • 在您的情况下,您可能希望将其放在另一个选项卡上,因为我放置它的位置使文件看起来非常混乱
  • 在每次迭代中,我执行以下步骤:
    • 为了实现-这个迭代还需要购买多少加仑
    • ThisIndex-此迭代的行号是多少?这是由最有效的索引-迭代次数决定的。请记住,由于我们按照效率提升的顺序进行排序,这意味着迭代从它能首先找到的最有效的选项开始。有一个检查,以确保它仅在介于范围[最低效率索引,最高效率索引]之间时输出一个值。否则,它将为空,以避免侵入数据(当前)选项卡中的另一个产品而导致计算错误
    • 零售价格、最低GAL、每份订单的加仑数-简单的数据提取,便于在迭代中使用,使用
      索引
      (间接地,借助此索引,
      匹配
    • 顺序-此公式有两个作用,概述如下:
      • 它检查在这个迭代中是否仍然存在有效的产品选择。它通过检查该索引是否仍然存在来实现这一点。如果产品不存在,那么它将为空。这是通过使用
        IF
        功能实现的
      • 它将确定购买此选项是否必须满足最低阈值。例如,您可以在第0次迭代中看到,最低量为20000加仑。如果要完成的数量大于或等于阈值或没有阈值,则此列将对采购进行量化。数学只是将完成量除以每订单量的加仑数,以确定这一特定产品选择的订单数量。如果存在一个阈值,但要完成的数量不满足该阈值,则使用0订单值跳过此迭代
      • 如果项目已处于其最低有效期