不同命名表中的间接索引和匹配问题公式
Indirect index and match problem formula in different named tables
我有一个单元格,我想根据条件
获取税率
来自“税收”,取决于制造商所在国家/地区、发布年份和车型
我尝试使用搜索和索引,但它根本不起作用,我需要单元格来检查制造商所在国家/地区的值、发布年份和汽车类型,使用这些输入转到税收 sheet 并得到值
在开始之前,我应该坦白说我是 OFFSET() 函数的传播者,也是 INDIRECT() 的死敌。
让我们假设每个国家/地区的车辆类型(TRUCKS、SEDANS,....)数量相同,即 8。(如果不是,则可以通过更多努力解决)。您可以将此数字放在某处的单元格中,并在需要类型数量时使用它。
此外,假设您屏幕截图中的第一列是 A 列。A1 单元格包含“中国”。
假设我们正在寻找法国 SEDANS 在 2009 年的税率。
函数 1:
=MATCH("France",$A:$A,0) will return 14 (if I have counted correctly)
...即单元格 A14 包含单词“法国”。
假设所有国家/地区的年份都相同,我们可以使用 header 行中的任何一行来找到正确的列。
函数 2:
=MATCH(2009,:,0)-1 will return 8 I think.
如果您的年份只是一串文本,请将 2009 替换为“2009”。
因为您的类型在每个 table 中的顺序都不相同(为什么?)我们需要一个额外的步骤。
函数 3:
=MATCH("SEDANS",OFFSET($A,(Result of f1) -1 + 3,0,8,1),0) should return 3.
OFFSET 函数中的数学是什么?我需要从单元格 A1 向下 (14-1) 行才能到达“法国”。从那里我需要再往下走 3 行才能到达类型列表的第一个,并且有 8 种类型可供搜索。然后我正在查看 8 行 x 1 列的单元格范围。
现在您可以提取税率,使用
函数 4:
=INDEX(OFFSET($A,(Result of f1) -1+3,1,8,100),(Result of f3),(Result of f2))
(我输入了 100,因为我不知道你有多少年的列。你可以使用类似 =COUNTA($3:$3)-1 的东西,如果在最后日期)。
我会在您测试时将每个函数的结果放在一个单元格中。一旦您对每个步骤都正常工作感到满意,您就可以将所有不同的函数嵌套在一起,或者只是在结果的右侧放置一些额外的列 table,如果需要,您可以将其隐藏。
已编辑:在单元格引用上添加一些 $ 以锁定数据的“来源”。
如果您的税收 table 是真实的 Tables,每个 NAME 都带有相应国家/地区的名称,你可以使用类似的东西:
=VLOOKUP(H13,INDIRECT(H12),MATCH(TEXT(H14,"0"),INDIRECT(H12 & "[#Headers]"),0))
哪里
H12
包含国家名称
H13
包含车辆类型
H14
包含年份
例如:
- 您需要根据您的实际范围进行调整,但这提供了一种方法。
- 我建议在
H13:H14
中使用下拉列表(来自数据验证)以避免拼写错误。
如果您想避免使用表格以及可变函数 OFFSET
和 INDIRECT
(因为如果您有很多可变函数,它们会影响工作表的性能)您可以尝试non-volatile,但更长更晦涩:
=VLOOKUP($H,INDEX($A:$A,MATCH($H,$A:$A,0)):INDEX($D:$D,LOOKUP(2,1/($A:$A<>""),ROW($A:$A))),$H-2000,FALSE)
在上面,你必须做出调整
假设是:
- 国名在相关税费之上table
- 税 table 从 A 列开始
- 如果 A 列不是从那里开始,请更改对 A 列的引用。
- 将对 D 列的引用更改为税的最后一列 table(如果您要扩展它,甚至更远)。
- 所有国家/地区的年份列都标记相同(例如:从 2002 年开始的连续年份)
$H-2000
计算 VLOOKUP
函数的列参数。
我有一个单元格,我想根据条件
来自“税收”,取决于制造商所在国家/地区、发布年份和车型
我尝试使用搜索和索引,但它根本不起作用,我需要单元格来检查制造商所在国家/地区的值、发布年份和汽车类型,使用这些输入转到税收 sheet 并得到值
在开始之前,我应该坦白说我是 OFFSET() 函数的传播者,也是 INDIRECT() 的死敌。
让我们假设每个国家/地区的车辆类型(TRUCKS、SEDANS,....)数量相同,即 8。(如果不是,则可以通过更多努力解决)。您可以将此数字放在某处的单元格中,并在需要类型数量时使用它。
此外,假设您屏幕截图中的第一列是 A 列。A1 单元格包含“中国”。
假设我们正在寻找法国 SEDANS 在 2009 年的税率。
函数 1:
=MATCH("France",$A:$A,0) will return 14 (if I have counted correctly)
...即单元格 A14 包含单词“法国”。
假设所有国家/地区的年份都相同,我们可以使用 header 行中的任何一行来找到正确的列。
函数 2:
=MATCH(2009,:,0)-1 will return 8 I think.
如果您的年份只是一串文本,请将 2009 替换为“2009”。
因为您的类型在每个 table 中的顺序都不相同(为什么?)我们需要一个额外的步骤。
函数 3:
=MATCH("SEDANS",OFFSET($A,(Result of f1) -1 + 3,0,8,1),0) should return 3.
OFFSET 函数中的数学是什么?我需要从单元格 A1 向下 (14-1) 行才能到达“法国”。从那里我需要再往下走 3 行才能到达类型列表的第一个,并且有 8 种类型可供搜索。然后我正在查看 8 行 x 1 列的单元格范围。
现在您可以提取税率,使用
函数 4:
=INDEX(OFFSET($A,(Result of f1) -1+3,1,8,100),(Result of f3),(Result of f2))
(我输入了 100,因为我不知道你有多少年的列。你可以使用类似 =COUNTA($3:$3)-1 的东西,如果在最后日期)。
我会在您测试时将每个函数的结果放在一个单元格中。一旦您对每个步骤都正常工作感到满意,您就可以将所有不同的函数嵌套在一起,或者只是在结果的右侧放置一些额外的列 table,如果需要,您可以将其隐藏。
已编辑:在单元格引用上添加一些 $ 以锁定数据的“来源”。
如果您的税收 table 是真实的 Tables,每个 NAME 都带有相应国家/地区的名称,你可以使用类似的东西:
=VLOOKUP(H13,INDIRECT(H12),MATCH(TEXT(H14,"0"),INDIRECT(H12 & "[#Headers]"),0))
哪里
H12
包含国家名称H13
包含车辆类型H14
包含年份
例如:
- 您需要根据您的实际范围进行调整,但这提供了一种方法。
- 我建议在
H13:H14
中使用下拉列表(来自数据验证)以避免拼写错误。
如果您想避免使用表格以及可变函数 OFFSET
和 INDIRECT
(因为如果您有很多可变函数,它们会影响工作表的性能)您可以尝试non-volatile,但更长更晦涩:
=VLOOKUP($H,INDEX($A:$A,MATCH($H,$A:$A,0)):INDEX($D:$D,LOOKUP(2,1/($A:$A<>""),ROW($A:$A))),$H-2000,FALSE)
在上面,你必须做出调整
假设是:
- 国名在相关税费之上table
- 税 table 从 A 列开始
- 如果 A 列不是从那里开始,请更改对 A 列的引用。
- 将对 D 列的引用更改为税的最后一列 table(如果您要扩展它,甚至更远)。
- 所有国家/地区的年份列都标记相同(例如:从 2002 年开始的连续年份)
$H-2000
计算VLOOKUP
函数的列参数。