获取index和match的结果,并将第一个匹配项返回到第一列,第二个匹配项返回第二列,依此类推

时间:2019-06-25 09:28:12

标签: excel-formula

我正在Excel上建立积分系统。

我有一个孩子数据库,每个孩子都分配有条形码。 我有一个点数据库,每个点都分配有条形码。

我有一张纸,孩子们可以在其中扫描他们的私人条形码,然后扫描他们所获得的积分的条形码,并将积分记入他们的帐户。

我坚持将他们扫描的积分添加到他们的帐户中。

我尝试在ArrayFormula之后使用此方法,但是工作表变慢了

=ArrayFormula(iferror(index('kids Scanning Page'!$H:$H,small(if($A2='kids Scanning Page'!$C:$C,row('kids Scanning Page'!$C:$C),""),sum(1)))))

我尝试使用此索引并匹配公式

=INDEX('kids Scanning Page'!$I:$I,MATCH($A$2,'kids Scanning Page'!$D:$D,0))

但这只是给我第一场比赛

有人可以建议我可以解决我的问题吗?

以下是了解我的公式

kids Scanning Page'!$H:$H = the points the kid got for all transaction 
$a2 = the database of the kid's barcode 
kids Scanning Page'!$C:$C = unique id for each barcode transaction 
kids Scanning Page'!$I:$I = the points the kid got for this transaction 
kids Scanning Page'!$D:$D = the column were the kids can scan their barcodes 

1 个答案:

答案 0 :(得分:1)

我想的第一件事是帮助专栏,请参阅link

如果没有助手,那么至少不要在整个列中使用数组公式,这会显着降低速度。而是使用绝对范围,例如例如$A$2:$A$100。或者,如果范围必须是动态的,则使用非易失性选项来获取最后使用的行而不是整个列。

所以不是

MATCH(criteria,A:A....

您可以使用例如:

MATCH(criteria,$A$1:INDEX(A:A,COUNTA(A:A))....

或者:

MATCH(criteria,$A$1:INDEX($A:$A,MATCH("ZZZ",$A:$A))....

创建较小的范围以通过数组公式进行计算。