更新以下 - 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 =检查#
答案 0 :(得分:3)
两列匹配通常采用两种典型配置之一;一个是数组公式,另一个是标准公式。两者都使用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
您应该收到如下结果。
IFERROR function已用于捕获不匹配并显示无匹配而不是#N/A
错误。
我修改了单个工作表示例数据中的值,以显示各种匹配以及 chknum 和金额被两个不同的<重复的情况< em> donationID 条目。
匹配记录采用颜色编码,以便快速参考。我已经在我的Docs.com-Preview网站公开发布了这个示例工作簿。
答案 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的MIN
或MAX
。如果只有一个结果,您将立即得到它。如果存在冲突,您可以切换到COUNT
并标记>1
中的任何一个来确定这一点。
使用MAX
设置表后,您可以快速使用GETPIVOTDATA
来提取匹配值。
这假设您的amount
值足够接近(在浮点小数意义上)以匹配。几乎所有人都会。有些人可能没有。如果你可以将50k的记录减少到100但是要仔细检查,那么生活就是好的。
示例数据和数据透视设置的图片,显示基于左侧数据构建的数据透视表(带有捐赠ID)。查找数据在右侧。
查找的
公式是一个简单的GETPIVOTDATA
,这是在单元格F3
中并向下复制。
=GETPIVOTDATA("Donation",$B$10,"Check",G3,"Amount",H3)
如果没有匹配,您将收到#REF!
错误。有关示例,请参见最后一行。
答案 3 :(得分:1)
为了通过匹配多个字段来比较两组数据并获得另一个字段作为匹配的结果,我建议为每个数据库添加一个新字段以创建要匹配的字段的连接值,然后使用{{ 1}}和VLOOKUP
个公式相结合。
让我们使用Jeeped提供的样本数据,我们在其中:
数据A:Quickbooks - 范围COUNTIF
和数据B:捐款 - 范围D1:M24
,分别扩展为R1:W23
和C1:M24
Q1:W23
作为分隔符。数据A:在列|
中添加字段“键”并输入此公式
C
数据B:在列=CONCATENATE($E2,"|",$M2)
中添加字段“键”并输入此公式
Q
数据A:在列=CONCATENATE($V2,"|",$W2)
N
数据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
答案 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)
这仅适用于数值。