Excel képlet: Számoljon hosszú számokat COUNTIF nélkül

Általános képlet

SUMPRODUCT(--(A:A=A1))

Összegzés

Előszó

Ez egy bosszantóan hosszú bevezetés, de a kontextus fontos, sajnálom!

Ha nagyon hosszú (16+ számjegyű) számokat próbál meg számlálni egy tartományban a COUNTIF segítségével, akkor hibás eredményeket láthat, mivel hibát okozhat bizonyos funkciók kezelése a hosszú számokkal, még akkor is, ha ezeket a számokat szövegként tárolja. Vegye figyelembe az alábbi képernyőt. A D oszlop összes számlája helytelen - bár a B oszlop minden egyes száma egyedi, a COUNTIF által visszaadott szám azt sugallja, hogy ezek a számok duplikátumok.

=COUNTIF(data,B5)

Ez a probléma azzal függ össze, hogy az Excel hogyan kezeli a számokat. Az Excel csak 15 jelentős számjegyet képes kezelni, és ha 15-nél nagyobb számot ad meg az Excelben, akkor a záró számok némán konvertálódnak. A fent említett számlálási probléma ebből a határból fakad.

Normál esetben elkerülheti ezt a korlátot úgy, hogy hosszú számokat ír be szövegként, akár úgy, hogy a számot egyetlen idézettel kezdi ('999999999999999999), vagy ha a cellákat cellákká formázza szövegként a bevitel előtt. Mindaddig, amíg nem kell matematikai műveleteket végrehajtania egy számnál, ez jó megoldás, és lehetővé teszi extra hosszú számok megadását például hitelkártya-számokhoz és sorozatszámokhoz anélkül, hogy számokat veszítene.

Ha azonban a COUNTIF számítógépről megpróbál 15-nél hosszabb számokat számlálni (még szövegként is tárolva), akkor megbízhatatlan eredményeket láthat. Ez azért történik, mert a COUNTIF a hosszú értéket belsőleg egy számgá alakítja vissza a feldolgozás során, kiváltva a fent leírt 15 jegyű határt. Ha nincs minden számjegy, néhány szám duplikátumokként kerülhet beszámításra, ha COUNTIF-el számoljuk.

Megoldás

Az egyik megoldás a COUNTIF képlet helyettesítése egy olyan képlettel, amely SUM vagy SUMPRODUCT alkalmazást használ. A bemutatott példában az E5 képlete így néz ki:

=SUMPRODUCT(--(data=B5))

A képlet az elnevezett "data" tartományt (B5: B9) használja, és a SUMPRODUCT segítségével minden számhoz megfelelő számot generál.

Magyarázat

Először is, a SUMPRODUCT belsejében lévő kifejezés összehasonlítja a nevezett "data" tartomány összes értékét az aktuális sor B oszlopának értékével. Ennek eredményeként TRUE / FALSE eredmények tömbje keletkezik.

=SUMPRODUCT(--(data=B5)) =SUMPRODUCT(--((TRUE;FALSE;FALSE;FALSE;FALSE)))

Ezután a kettős negatív a TRUE / FALSE értékeket 1/0 értékekre kényszeríti.

=SUMPRODUCT((1;0;0;0;0))

Végül a SUMPRODUCT egyszerűen összegzi a tömb elemeit, és visszaadja az eredményt.

Tömb képletváltozat

A SUMPRODUCT helyett használhatja a SUM függvényt is, de ez egy tömbképlet, amelyet a control + shift + enter billentyűkombinációval kell megadni:

(=SUM(--(B:B=B5)))

Egyéb funkciók ezzel a problémával

Magam még nem ellenőriztem, de úgy tűnik, hogy több függvénynek ugyanaz a problémája, mint a SUMIF, SUMIFS, COUNTIF, COUNTIFS, AVERAGEIF és AVERAGEIFS.

Jó linkek

15 számjegyű probléma a SUMIF (S), COUNTIF (S), AVERAGEIF (S) (wmfexcel.com) COUNTIF hibajelentéssel, John Walkenbach (dailydoseofexcel.com)

érdekes cikkek...