在Google表格上具有多个行和列条件的索引匹配

时间:2018-10-08 17:50:31

标签: excel indexing google-sheets match multiple-columns

我有一个电子表格,该电子表格包含3个工作表:一个用于按月购买饮料,一个用于按月购买水果,以及一个要在其中显示其他2个表中数据摘要的主表。

我想做的是根据餐厅名称(Col A),水果或饮料类型(Col B)和月份(行2)在正确的单元格中显示数据。因此,例如,如果1月18日餐厅1的果汁费用为20欧元,我希望主表在单元格C6中显示20欧元(请参阅下面的电子表格)。我尝试了不同的索引匹配,求和和数组公式,但无法正确完成。

我曾尝试研究解决方案,但找不到适合我具体情况的任何东西。我希望有一个人可以帮助我!

在这里您可以找到共享的电子表格,可以随时进行试用并根据自己的喜好进行编辑。

https://docs.google.com/spreadsheets/d/1O3PhzAg1qRPGGHBTlphCETEBDJg8sZrVW0rVmghbVCM/edit?usp=sharing

谢谢!

2 个答案:

答案 0 :(得分:0)

手动操作很容易。对于示例

  

如果1月18日的餐厅1的果汁费用为20欧元,则我需要母版纸   在单元格C6中显示20€

只需将=Beverages!C7放在C6中即可。

您可以为所有gen-18手动执行此操作,然后使用剩余月份的自动填充功能将它们水平拖动。enter code here

答案 1 :(得分:0)

这里只是饮料的建议:

=index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:index($A:$A,row()),1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:index($A:$A,row()),1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))

修改

这可以简化(不需要索引之一)

=index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))

说明

(1)查找您当前正在处理的餐厅:

index($A:$A,match("zzz",$A$1:$A4,1))

它仅向下搜索到当前行,直到它在A列中找到的最后一个非空白单元格。

(2)在“饮料”表中找到该餐厅的起始行:

match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)

(3)现在匹配饮料表中的饮料名称:

match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)

(4)但您仍然必须重新添加搜索的起始位置(因为您没有从顶部开始):

match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1))

这整个过程在饮料表中提供了您想要的行。

(5)只需匹配第2行中的相应月份,即可在饮料表中获得该列。

match(C$2,Beverages!$C$2:$L$2,0)

(或者,如果几个月相匹配,您可能只需花些时间即可。)

因此,饮料和水果的整个过程都是

=iferror(index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))
,index(Fruit!$C:$L,match($B4,index(Fruit!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Fruit!$A:$A,0)):Fruit!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Fruit!$A:$A,0)-1,match(C$2,Fruit!$C$2:$L$2,0)))