不同命名表中的间接索引和匹配问题公式

问题描述

我有一个单元格,我想根据标准

enter image description here

获取税率

来自“税收”,取决于制造商所在国家/地区,发布年份和汽车类型

我尝试使用搜索和索引,但根本无法使用,我需要该单元格检查制造商所在国家/地区的值,发行年份和汽车类型,然后使用这些输入进入“税收”表并获取

enter image description here

解决方法

在我开始之前,我应该打个招呼,说我是OFFSET()函数的福音传教士,并且是INDIRECT()的致命敌人。

让我们假设每个国家/地区的车辆类型(卡车,轿车,...)的数量都是相同的,即8。(如果不是,那么可以花更多的精力来解决)。您可以将此数字放在某个单元格中,然后在需要多种类型时使用它。

另外,假设屏幕快照中的第一列是A列。并且单元格A1包含“中国”。

假设我们正在为法国的SEDANS寻求2009年的税率。

功能1:

=MATCH("France",$A:$A,0) will return 14 (if I have counted correctly) 

...即单元格A14包含“法国”一词。

假设所有国家/地区的年均相同,我们可以使用任何标题行来查找右列。

功能2:

=MATCH(2009,$3:$3,0)-1 will return 8 I think. 

如果您的年份只是文本字符串,那么将2009替换为“ 2009”。

由于您的类型在每个表中的顺序不同(为什么?),我们需要采取额外的步骤。

功能3:

=MATCH("SEDANS",OFFSET($A$1,(Result of f1) -1 + 3,8,1),0) should return 3. 

OFFSET函数的数学运算是什么?我需要从A1单元格向下(14-1)行才能到达“法国”。从那里,我需要再向下走3行才能到达“类型”列表的第一行,并且有8种类型可以搜索。然后,我查看了8行x 1列的单元格范围。>

现在您可以使用提取税率

功能4:

=INDEX(OFFSET($A$1,(Result of f1) -1+3,1,100),(Result of f3),(Result of f2))

(我放了100个,因为我不知道你有多少年。如果最后一个日期之后的第三行没有其他内容,则可以使用= COUNTA($ 3:$ 3)-1之类的东西)。

在测试时,我会将每个函数的结果放在一个单元格中。对每个步骤都能正常工作感到满意后,您可以将所有各种功能嵌套在一起,或者在结果表的右侧放置一些额外的列,如果需要可以隐藏它们。

已编辑:要在单元格引用上添加一些$以锁定数据的“来源”。

,

如果您的税表是真实的,则每个名称都将加上各自的国家/地区名称,您可以使用类似的

=VLOOKUP(H13,INDIRECT(H12),MATCH(TEXT(H14,"0"),INDIRECT(H12 & "[#Headers]"),0))

其中

  • H12包含国家/地区名称
  • H13包含车辆类型
  • H14包含年份

例如:

enter image description here

  • 您需要使它适应实际范围,但这提供了一种方法。
  • 我建议在H13:H14中使用(来自“数据验证”的)下拉列表,以避免输入错误。

如果您要避免使用表格以及易失性函数OFFSETINDIRECT(因为如果您有很多易失性函数,它们可能会损害工作表的性能),则可以尝试使用易挥发,但时间更长且更晦涩:

=VLOOKUP($H$13,INDEX($A:$A,MATCH($H$12,0)):INDEX($D:$D,LOOKUP(2,1/($A:$A<>""),ROW($A:$A))),$H$14-2000,FALSE)

在上面,您必须进行调整

假设是:

  • 国家名称在相关税表上方
  • 税收表从A列开始
    • 如果列A不在此处开始,请更改其引用。
    • 将对D列的引用更改为税表的最后一列(如果要扩展它,甚至可以更进一步)。
  • 在所有国家/地区中,“年”列的标签均相同(例如:从2002年开始的连续年份)
  • $H$14-2000计算VLOOKUP函数的列参数。