以下是针对饮料的建议:
=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) 在 Beverages 表中找到这家餐厅开始的行:
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)))