簡體   English   中英

Excel:需要復雜的SUMPRODUCT公式

[英]Excel: complicated SUMPRODUCT formula needed

我正在尋找SUMPRODUCT公式或執行相同功能的類似公式。 它應該執行以下操作:

  1. 在工作表A上,它需要忽略不正確的郵政編碼,這意味着不包含4個數字和2個字母的郵政編碼。 還需要考慮到,郵政編碼后面有時會出現多余的空間。 有時數字和字母之間有一個空格,有時沒有。 僅需要比較4個數字和2個字母。
  2. 需要將工作表A上的正確郵政編碼與工作表B上的郵政編碼進行比較。如果它們匹配,則需要對郵政編碼后面的所有值求和。 如果還有其他記錄以相同的郵政編碼開頭,則也需要將它們加起來。
  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將返回一個空字符串,而CODE隨后將給出一個錯誤。 您可以改用以下代碼,以確保字符串優先為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," ",""))),""),"")

在這里,您有一個公式來驗證荷蘭郵政編碼

=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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM