Excel 在列表中查找多个值

Excel Look up multiple values in a list

我有一个数据列表,需要根据描述将其放入不同的帐户,但我不知道如何自动将正确的代码放入。

图中,column AOSPX224OSPX229等事务类型,然后就是列表这些交易类型中的每笔交易以及每种类型的费用总额。我希望根据该部分的 OSPX 编号自动在每个黄色单元格中输入一个编号。例如,D1402应该是OSPX223进入的账户,D1419应该是OSPX224进入的账户.

我可以在不同的选项卡上创建一个参考列表,其中包含 OSPX 编号和每个编号的帐号。

每个交易列表的长度都不同,因此有时 OSPX 编号是费用总额上方的行,有时是上方 3 页。每个报告的交易数量也会发生变化。

有什么办法吗?

Don Pete 的回答非常有帮助,而且正是我所要求的,但现在我 运行 遇到了一个新问题。在整个数据中的随机点有标题部分。如示例 2 所示,"charge total" 之后的行是 1 而不是下一个 ospx 编号,这意味着绿色列不起作用。关于如何在费用总计行之后而不是仅在下一行之后找到下一个 ospx 编号的任何想法?

另外,有什么方法可以在 D 列中使用“0”或什么都没有,而不是使用“#N/A”

Example 2

如果模式保持不变并且您的新范围在 Total 行之后立即开始,则可以通过另外两个行和 Index () 来完成此操作。 E 列将在 Column A 中标记 Total 并从列的开头计算每次出现的次数。 Column F 将 return 相应的 OPSX 数字,这是前一总计行下方单元格中的值,无论中间有多少行。以前的 。最后,您可以使用 Index(Match( )) 到 return 相应的帐户。见图片。彩色单元格包含可以在行内复制的公式。您需要在顶部添加一个总计行(此处为 1400)并在 Row E.

中输入起始值(例如 1;灰色单元格)

公式:

D1418 =INDEX($J:$J,MATCH(F20,$I:$I,0))
E1416 =IF(ISERROR(FIND("Total",A1416)),"",COUNT($E00:E1415)+1)
F1414 =IFERROR(INDEX($A00:A1414,MATCH(E1414-1,$E00:E1414,0)+1),"")

编辑: 关于标题:费用总额和要求的OSPX-number之间总是有两行吗? OSPX-number 总是有 7 个字符吗?然后你可以使用这个公式得到OSPX:=if(A1457="Charge Total"; left(A1444;7);"")Left() 将从文本字符串中提取 n 个字符,从左开始。

关于#N/A: 您可以像我在绿色公式中那样使用 iferrror() 来屏蔽错误。请注意,在发生意外事件时,屏蔽错误可能会导致结果损坏。