问题描述
来自“税收”,取决于制造商所在国家/地区,发布年份和汽车类型
我尝试使用搜索和索引,但根本无法使用,我需要该单元格检查制造商所在国家/地区的值,发行年份和汽车类型,然后使用这些输入进入“税收”表并获取值
解决方法
在我开始之前,我应该打个招呼,说我是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
包含年份
例如:
- 您需要使它适应实际范围,但这提供了一种方法。
- 我建议在
H13:H14
中使用(来自“数据验证”的)下拉列表,以避免输入错误。
如果您要避免使用表格以及易失性函数OFFSET
和INDIRECT
(因为如果您有很多易失性函数,它们可能会损害工作表的性能),则可以尝试使用易挥发,但时间更长且更晦涩:
=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
函数的列参数。