在具有多个匹配项的Excel列中查找单个值

时间:2016-08-10 15:05:35

标签: excel excel-vba excel-formula vba

我有一个客户编号列表,我需要搜索一个帐号列表,以查明客户的文件中是否有特定的帐号。

我原来的表格看起来像这样

original

我的帐号列表如下所示

  • 217 1008
  • 218 1008
  • 219 1008
  • 217 2009
  • 218 2009
  • 219 2009
  • 218 3015
  • 219 3015
  • 217 4017
  • 219 4017

预期结果如下所示

results

最初,我连接了客户端和账号然后做了VLOOKUP,但我确信有更好的方法。也许在工作表中使用VBA而不是公式。任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

如果您的客户和帐户列表位于单独的单元格中,则可以使用Countifs()

enter image description here

答案 1 :(得分:1)

正如@pnuts所说,数据透视表会为您提供结果表,但如果您拥有大量客户/帐户,它很快就会变得难以处理。除非您不想修改数据,否则您的附加值的VLOOKUP是一个很好的方法。

如果您只对单个客户/帐户进行单次检查,或许只使用数据上的自动过滤器可能是一个更简单的解决方案?

答案 2 :(得分:1)

如果客户端和帐户位于同一列中,则可以使用此选项尝试MATCH行和列标题的连接(带空格):

=IF(NOT(ISERROR(MATCH($C4&" "&D$1,$A$2:$A$11,0))),"X","")

E.g:

enter image description here

答案 3 :(得分:0)

我将假设结果中显示的表格在单元格A1中开始,因此您的公式将在B3中键入并向右和向下复制。我还假设您的帐户列表位于命名范围Acct中。

=IF(MATCH($A3&" "&B$14,Acct)>0,"X","")

将其复制到示例中B3:E5中的所有单元格。

答案 4 :(得分:0)

这是另一种方式,使用Index/Match。使用Text to Columns,Space Delimiter将您的217 1008列分成两列。然后说这些在J1:J10(217, 218, etc.)范围内,在K1中:K10是1008, 1009, etc.

=IF(NOT(ISERROR(INDEX($J$1:$J$10,MATCH($A2&B$1,$J$1:$J$10&$K$1:$K$10,0)))),"X","")
(以 CTRL + SHIFT + ENTER

输入数组

A2是217数字下降的开头,B1是1008开始向右。