Excel vzorec: Počítajte dlhé čísla bez COUNTIF -

Všeobecný vzorec

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

Zhrnutie

Predslov

Toto je nepríjemne dlhý úvod, ale kontext je dôležitý, prepáčte!

Ak sa pokúsite spočítať veľmi dlhé čísla (16 a viac číslic) v rozsahu s parametrom COUNTIF, môžu sa vám zobraziť nesprávne výsledky v dôsledku chyby v zaobchádzaní s dlhými číslami určitými funkciami, aj keď sú tieto čísla uložené ako text. Zvážte obrazovku uvedenú nižšie. Všetky počty v stĺpci D sú nesprávne - hoci každé číslo v stĺpci B je jedinečné, počet vrátený parametrom COUNTIF naznačuje, že tieto čísla sú duplikáty.

=COUNTIF(data,B5)

Tento problém súvisí s tým, ako program Excel spracováva čísla. Excel dokáže spracovať iba 15 platných číslic a ak v programe Excel zadáte číslo s viac ako 15 číslicami, uvidíte nasledujúce číslice v tichosti prevedené na nulu. Vyššie uvedený problém s počítaním vyplýva z tohto limitu.

Tomuto limitu sa obvykle môžete vyhnúť zadávaním dlhých čísel ako textu, a to buď tak, že začnete číslo jednoduchou úvodzovkou („999999999999999999), alebo naformátujete bunky ako Text pred zadaním. Toto riešenie je dobré, pokiaľ nepotrebujete vykonávať matematické operácie s číslom. Umožňuje vám zadávať mimoriadne dlhé čísla, napríklad čísla kreditných kariet a sériové čísla, bez straty čísel.

Ak sa však pokúsite pomocou funkcie COUNTIF spočítať číslo s viac ako 15 číslicami (aj keď sú uložené ako text), môžu sa vám zobraziť nespoľahlivé výsledky. Stáva sa to preto, lebo COUNTIF interne prevádza dlhú hodnotu späť na číslo v určitom okamihu spracovania, čím sa spustí 15-miestny limit opísaný vyššie. Bez všetkých číslic sa niektoré čísla môžu počítať ako duplikáty, keď sa počítajú s COUNTIF.

Riešenie

Jedným z riešení je nahradiť vzorec COUNTIF vzorcom, ktorý používa SUM alebo SUMPRODUCT. V zobrazenom príklade vyzerá vzorec v E5 takto:

=SUMPRODUCT(--(data=B5))

Vzorec používa pomenovaný rozsah „data“ (B5: B9) a generuje správny počet pre každé číslo pomocou SUMPRODUCT.

Vysvetlenie

Po prvé, výraz vo vnútri SUMPRODUCT porovnáva všetky hodnoty v pomenovanom rozsahu „data“ s hodnotou zo stĺpca B v aktuálnom riadku. Výsledkom je pole výsledkov PRAVDA / NEPRAVDA.

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

Ďalej dvojitý zápor vynúti hodnoty TRUE / FALSE na hodnoty 1/0.

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

Nakoniec program SUMPRODUCT jednoducho sčíta položky v poli a vráti výsledok.

Variant vzorca v poli

Môžete tiež použiť funkciu SUM namiesto SUMPRODUCT, ale toto je vzorec poľa a musí sa zadať pomocou klávesov control + shift + enter:

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

Ďalšie funkcie s týmto problémom

Sám som to neoveril, ale zdá sa, že niekoľko funkcií má rovnaký problém, vrátane SUMIF, SUMIFS, COUNTIF, COUNTIFS, AVERAGEIF a AVERAGEIFS.

Dobré odkazy

15-miestne číslo s číslami SUMIF (S), COUNTIF (S), AVERAGEIF (S) (wmfexcel.com) COUNTIF Správa o chybe Johna Walkenbacha (dailydoseofexcel.com)

Zaujímavé články...