用SUMIF對超15位的代碼進行條件求和,出錯了,緣由是....

用SUMIF對超15位的代碼進行條件求和,出錯了,緣由是.... 

1、問題函數

有讀者朋友問:編碼

用SUMIF進行條件求和時,若是統計的條件是超15位的代碼,就會出錯,好比下圖要統計D2單元格身份證號在A列出現的個數、對應B列的金額之和,spa

E9單元格公式爲:blog

=COUNTIF(A2:A14,D2)it

E10單元格公式爲:class

=SUMIF(A2:A14,D2,B2:B14)數據類型

公式並無錯,但計算結果倒是錯的!這是什麼緣由?應該用什麼公式?方法

2、緣由im

要弄清這個緣由,首先要從Excel的最大數字位數講起,在Excel中,數字的最大位數15位超過15位的數字,會自動將後面的位數變爲0,這一點,咱們在輸入身份證號時,應該遇到過,每次輸入18位身份證號,後面三位會自動變爲0。解決方法時將單元格設置爲文本格式再輸入,或者在身份證號前加英文的'符號。統計

本文中的問題也是這個緣由。可能你們會說,A列不是已經將其設爲文本格式了嗎?爲何仍是會將其做爲數字對等呢?這應該是與Excel的特色有關,Excel並不象Power Query對數字類型有嚴格的要求同樣,它會根據狀況自動轉換數據類型,好比下圖,

A一、A2是文本,咱們在A3設置公式

=A1+A2

那麼公式就會出錯,由於文本是沒法相加的。

可是,

B1和B2一樣是文本(文本型的數字),B3單元格的公式仍是

=B2+B3,此公式卻不會出錯,Excel會自動將B一、B2自動轉換爲數字類型,而後相加。

於是,當遇到文本格式的身份證或編碼時,Excel會自作聰明的將其轉換爲數字,於是數字15位之後的自動變爲0,於是用COUNTIF或SUMIF統計個數或求和,其結果就會出錯。

3、怎麼辦

解決方法:

一、在條件中後加通配符

添加通配符後,Excel就會將其視爲文本

=COUNTIF(A2:A14,D2&"*")

=SUMIF(A2:A14,D2&"*",B2:B14)

二、使用SUMPRODUCT函數

=SUMPRODUCT((A2:A14=D2)*1)

=SUMPRODUCT((A2:A14=D2)*B2:B14)

提醒:

若是將統計個數的公式寫爲=SUMPRODUCT(A2:A14=D2),其計算結果會是零,由於公式其實是=SUMPRODUCT({FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE})

若是TRUE和FALSE若是不對其進行運算時,SUMPRODUCT不會將其視同1和0對待的,因此,須要寫成=SUMPRODUCT((A2:A14=D2)*1)

相關文章
相關標籤/搜索