需要找到与两列条件匹配的值。可能的VLOOKUP

时间:2015-06-03 18:40:55

标签: excel excel-formula

更新以下 - 6/4

我在excel中有两个工作表。一个是捐款人名单,他们的支票#/金额/捐款人ID(" 捐款"工作表),另一个是捐款人ID /支票#的会计信息副本/ amount( quickbooks 工作表)。 Quickbooks还没有填写DonorID。

我遇到的问题是我需要将Donor ID与他们的支票相匹配。为此,我需要匹配" Quickbooks"中的check#amount。同样在捐赠"当他们匹配时,它会给我与该支票相对应的捐款人ID。

这是如何布局的:

Donations Worksheet:
     A                  B           C
 DonationID           Check#     Amount
1   179                106        $200
2   210                106        $500
3   220                106        $600

Quickbooks Worksheet:
      A                B          C
  DonationID         Check#     Amount
1    n/a              106        200
2    N/a              1074       500
3    N/a              300        1000

当我要求找到"检查#106是200美元"它应该告诉我它来自Donor 179。

有些检查不匹配,也不属于捐赠者。该列表有近50000个名称。

请问我任何问题,以便我可以更多地澄清这一点。如果我不清楚的话,我对这一切也有点新意并道歉。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~

感谢大家的帮助。我们还不在那里,但你们都指引我朝着正确的方向前进。

我添加了该页面的屏幕截图以供参考,因为该团队在制定给定公式时遇到了问题。我还将两张纸合并到一页上,这样就可以减少交叉工作表的引用,并且更易于阅读。

Cknum =检查#

worksheet

5 个答案:

答案 0 :(得分:3)

两列匹配通常采用两种典型配置之一;一个是数组公式,另一个是标准公式。两者都使用INDEX / MATCH函数对的变体。

Two column Match with INDEX MATCH

Quickbooks的标准公式!A2将是,

=IFERROR(INDEX(Donations!A$1:A$999, MIN(INDEX(ROW($1:$999)+((Donations!B$1:B$999<>B2)+(Donations!C$1:C$999<>C2))*1E+99, , ))), "No match")

Quickbooks的数组公式版本!A2将是,

=IFERROR(INDEX(Donations!A$1:A$999, MATCH(1, (Donations!B$1:B$999=B2)*(Donations!C$1:C$999=C2), 0)), "no match")

数组公式需要使用 Ctrl + Shift + Enter↵完成,而不是简单地Enter↵

一旦将其中一个公式放入Quickbooks!A2中,必要时填写以捕获其他行中的值。请注意,我更改了示例数据的第三行,以演示 Check# 106的第二个 DonationID 查找。

有大约50K的记录,很有可能在B列和C列都可以进行多次匹配。从捐赠中捕获后续的第二,第三等匹配/ em>工作表,将MIN function更改为SMALL function并使用渐进式COUNTIFS function来调整 k 序数。

=IFERROR(INDEX(Donations!A$1:A$50000, SMALL(INDEX(ROW($1:$50000)+((Donations!B$1:B$50000<>B2)+(Donations!C$1:C$50000<>C2))*1E+99, , ), COUNTIFS(B$2:B2, B2, C$2:C2, C2))), "No match")

Donations 工作表中设置了一些有意重复的内容后,

DonationID  Check#  Amount
179         106    $200 
210         106    $500 
220         106    $600 
979         106    $200 
910         106    $500 
920         106    $600 

您应该收到如下结果。

Two column Matches with duplicates

IFERROR function已用于捕获不匹配并显示无匹配而不是#N/A错误。

我修改了单个工作表示例数据中的值,以显示各种匹配以及 chknum 金额被两个不同的<重复的情况< em> donationID 条目。

VLOOKUP multiple criteria with duplicates

匹配记录采用颜色编码,以便快速参考。我已经在我的Docs.com-Preview网站公开发布了这个示例工作簿。

VLOOKUP_w_Multiple_Criteria_and_Duplicates.xlsx

答案 1 :(得分:1)

现有命令DGET可用于多个条件。

在你的QB工作表中,我从A7开始添加了另外几行。

COPY

请注意,我将Check#更改为CheckNo。我还添加了ID CheckNo Amount 106 200 The ID is 179 的定义,从A1到D4。

DGet声明是179的地方。我使用了donationDB

DGET的作用是查找数据库,告诉它您正在使用字段A7到C8中的条件在B1中查找捐赠者ID。

答案 2 :(得分:1)

解决此问题的一个简单方法是在Donations数据上创建数据透视表,然后使用GETPIVOTDATA从中提取值以获取Quickbooks上的捐赠ID表

如果捐赠ID始终为数字,则可以轻松完成。您设置一个包含行字段的数据透视表,包括支票号和金额。然后,您将值设置为等于捐赠ID的MINMAX。如果只有一个结果,您将立即得到它。如果存在冲突,您可以切换到COUNT并标记>1中的任何一个来确定这一点。

使用MAX设置表后,您可以快速使用GETPIVOTDATA来提取匹配值。

这假设您的amount值足够接近(在浮点小数意义上)以匹配。几乎所有人都会。有些人可能没有。如果你可以将50k的记录减少到100但是要仔细检查,那么生活就是好的。

示例数据和数据透视设置的图片,显示基于左侧数据构建的数据透视表(带有捐赠ID)。查找数据在右侧。

data and pivot

查找的

公式是一个简单的GETPIVOTDATA,这是在单元格F3中并向下复制。

=GETPIVOTDATA("Donation",$B$10,"Check",G3,"Amount",H3)

如果没有匹配,您将收到#REF!错误。有关示例,请参见最后一行。

答案 3 :(得分:1)

为了通过匹配多个字段来比较两组数据并获得另一个字段作为匹配的结果,我建议为每个数据库添加一个新字段以创建要匹配的字段的连接值,然后使用{{ 1}}和VLOOKUP个公式相结合。

让我们使用Jeeped提供的样本数据,我们在其中: 数据A:Quickbooks - 范围COUNTIF和数据B:捐款 - 范围D1:M24,分别扩展为R1:W23C1:M24

  1. 添加字段“键”以连接字段以匹配(在这种情况下为2个字段,但也适用于更多),使用Q1:W23作为分隔符。
  2. 数据A:在列|中添加字段“键”并输入此公式

    C

    数据B:在列=CONCATENATE($E2,"|",$M2) 中添加字段“键”并输入此公式

    Q
    1. 输入公式以匹配连接字段并检索所需信息(也表示重复的项目)
    2. 数据A:在列=CONCATENATE($V2,"|",$W2)

      中添加此公式
      N

      enter image description here

      数据B:在列=IF(COUNTIF($Q$1:$Q$23,$C2)>1, "Duplicated: "&COUNTIF($Q$1:$Q$23,$C2), IFERROR(VLOOKUP($C2,$Q$1:$W$23,2,0),""))

      中添加此公式
      X

      enter image description here

答案 4 :(得分:1)

我使用AVERAGEIFS函数基于多个条件获取数值。如果您不确定条件只会返回一个值,则可以使用COUNTIFS语句来包装。

=IF(COUNTIFS($A$1:$A$10, crit1, $B$1:$B$10, crit2) = 1, AVERAGEIFS($C$1:C$10, $A$1:$A$10, crit1, $B$1:$B$10, crit2), #N/A)

这仅适用于数值。