[英]Indirect index and match problem formula in different named tables
在开始之前,我应该坦率地说我是 OFFSET() 函数的传道者,并且是 INDIRECT() 的死敌。
让我们假设每个国家/地区的车辆类型(卡车、轿车、....)的数量相同,即 8。(如果不是,则可以稍微努力解决)。 您可以将此数字放在某个单元格中的某个位置,并在需要类型数量时使用它。
另外,假设屏幕截图中的第一列是 A 列。并且单元格 A1 包含“中国”。
假设我们正在寻找 2009 年法国 SEDANS 的税率。
功能一:
=MATCH("France",$A:$A,0) will return 14 (if I have counted correctly)
... 即单元格 A14 包含单词“法国”。
假设所有国家/地区的年份都相同,我们可以使用任何标题行来找到正确的列。
功能二:
=MATCH(2009,$3:$3,0)-1 will return 8 I think.
如果您的年份只是文本字符串,则将 2009 替换为“2009”。
因为您的类型在每个表中的顺序不同(为什么?)我们需要一个额外的步骤。
功能三:
=MATCH("SEDANS",OFFSET($A$1,(Result of f1) -1 + 3,0,8,1),0) should return 3.
OFFSET 函数中的数学是什么? 我需要从单元格 A1 向下 (14-1) 行才能到达“法国”。 从那里我需要再向下走 3 行以到达类型列表的第一个,并且有 8 种类型要搜索。然后我正在查看 8 行 x 1 列的单元格范围。
现在您可以提取您的税率,使用
功能四:
=INDEX(OFFSET($A$1,(Result of f1) -1+3,1,8,100),(Result of f3),(Result of f2))
(我放了 100,因为我不知道你有多少列。如果最后一个日期之后的第三行没有其他内容,你可以使用 =COUNTA($3:$3)-1 之类的东西)。
当你测试这个时,我会把每个函数的结果放在一个单元格中。 一旦您对每一步都正常工作感到满意,您就可以将所有不同的功能嵌套在一起,或者只是在结果表的右侧添加一些额外的列,如果您愿意,您可以隐藏这些列。
编辑:在单元格引用上添加一些 $ 以锁定数据的“来源”。
如果您的税表是真实的Tables ,每个NAME 都带有各自国家/地区的名称,您可以使用以下内容:
=VLOOKUP(H13,INDIRECT(H12),MATCH(TEXT(H14,"0"),INDIRECT(H12 & "[#Headers]"),0))
在哪里
H12
包含国家名称H13
包含车辆类型H14
包含年份例如:
H13:H14
中使用下拉列表(来自数据验证)以避免拼写错误。 如果您想避免使用表格以及易失性函数OFFSET
和INDIRECT
(因为如果您有很多易失性函数,它们会损害工作表的性能),您可以尝试使用非易失性但更长更模糊的方法:
=VLOOKUP($H$13,INDEX($A:$A,MATCH($H$12,$A:$A,0)):INDEX($D:$D,LOOKUP(2,1/($A:$A<>""),ROW($A:$A))),$H$14-2000,FALSE)
在上面,您必须进行调整
假设是:
$H$14-2000
计算VLOOKUP
函数的列参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.