Excel:需要复杂的SUMPRODUCT配方

我正在寻找一个SUMPRODUCT配方,或类似的配方,做同样的事情。 它应该做到以下几点:

  1. 在工作表A上,它需要忽略不正确的邮政编码,这意味着不包含4个数字和2个字母的邮政编码需要被忽略。 还需要考虑到邮政编码后面有时候会有多余的空格。 有时数字和字母之间有空格,有时候没有。 只需要比较4个数字和2个字母。
  2. 工作表A上的正确邮编需要与工作表B上的邮编进行比较。如果匹配,则需要总结邮政编码后面的所有值。 如果有另一条logging以相同的邮政编码开始,那么这些logging也需要相加。
  3. 由于数据经常产生,所以这两个工作表都不需要改变。 该公式应该能够在第三个单独的工作表上工作。 它应该在Excel 2003中工作。

编辑:添加点3。

我会添加一个图像来形象化我的意思。 希望有人能帮助我!

在这里输入图像说明

有了一些帮助列,你可以使用这样的东西(在新标签中打开大版本):

在这里输入图像描述

公式:

在B2中删除空格,从而得到一个“干净的”ZIP并检查长度:

 =IF(LEN(SUBSTITUTE(A2," ",""))=6,SUBSTITUTE(A2," ",""),"") 

在C2中,得到这个总和:

 =IFERROR(IF(AND(ISNUMBER(LEFT(B2,4)*1),CODE(MID(LOWER(B2),5,1))>=97,CODE(MID(LOWER(B2),5,1))<=122,CODE(RIGHT(LOWER(B2)))>=97,CODE(RIGHT(LOWER(B2)))<=122),SUMPRODUCT($H$2:$K$8*($G$2:$G$8=B2)),""),"") 

在G2中,我使用了与B2中相同的一个:

 =IF(LEN(SUBSTITUTE(F2," ",""))=6,SUBSTITUTE(F2," ",""),"") 

没有帮手,由于重复的部分,公式变得更长:

 =IFERROR(IF(AND(LEN(SUBSTITUTE(A2," ",""))=6,ISNUMBER(LEFT(SUBSTITUTE(A2," ",""),4)*1),CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))>=97,CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))<=122,CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))>=97,CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))<=122),SUMPRODUCT($H$2:$K$8*(SUBSTITUTE($F$2:$F$8," ","")=SUBSTITUTE(A2," ",""))),""),"") 

要么

 =IFERROR( IF( AND( LEN(SUBSTITUTE(A2," ",""))=6, ' Check length ISNUMBER(LEFT(SUBSTITUTE(A2," ",""),4)*1), ' Check numbers CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))>=97, ' Check if letter CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))<=122, ' Check if letter CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))>=97, ' Check if letter CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))<=122 ' Check if letter ), SUMPRODUCT( $H$2:$K$8* (SUBSTITUTE($F$2:$F$8," ","")=SUBSTITUTE(A2," ",""))), "" ), "" ) 

哎呀,忘了IFERROR不在2003年。我使用它的唯一原因是MID会返回一个空string,而CODE会随后给出一个错误。 你可以使用下面的代码来确保string是6个字符:

 =IF(LEN(SUBSTITUTE(A2," ",""))=6,IF(AND(ISNUMBER(LEFT(SUBSTITUTE(A2," ",""),4)*1),CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))>=97,CODE(MID(LOWER(SUBSTITUTE(A2," ","")),5,1))<=122,CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))>=97,CODE(RIGHT(LOWER(SUBSTITUTE(A2," ",""))))<=122),SUMPRODUCT($H$2:$K$8*(SUBSTITUTE($F$2:$F$8," ","")=SUBSTITUTE(A2," ",""))),""),"") 

在这里你有一个公式来validation荷兰邮政编码

 =AND(LEN(A2)=6; ISNUMBER(VALUE(LEFT(A2;4))); CODE(MID(LOWER(A2);5;1)) >= 97; CODE(MID(LOWER(A2);5;1)) <= 122; CODE(MID(LOWER(A2);6;1)) >= 97; CODE(MID(LOWER(A2);6;1)) <= 122) 

0-9 = ASCII码48到57
az = ASCII码97到122(小写)

如果您有荷兰语版本的Excel,则公式为:

 =EN(LENGTE(A2)=6; ISGETAL(WAARDE(LINKS(A2;4))); CODE(DEEL(KLEINE.LETTERS(A2);5;1)) >= 97; CODE(DEEL(KLEINE.LETTERS(A2);5;1)) <= 122; CODE(DEEL(KLEINE.LETTERS(A2);6;1)) >= 97; CODE(DEEL(KLEINE.LETTERS(A2);6;1)) <= 122)