Jak v Excelu spočítat ciferný součet?

Dnes jsme s Mitákem přemýšleli, jak v Excelu spočítat ciferný součet. A ideálně tak, aby vzorec zvládnul zpracovat i očesaný tabulkový kalkulátor v PDA nebo v mobilech.

Došel jsem akorát na tento vzorec:

  • Do buňky A10 vložit číslo, kde se má udělat ciferný součet
  • Do buňky B10 vložit tento vzorec: =SUMA(HODNOTA(ČÁST(A10;ŘÁDEK(A1:POSUN(A1;DÉLKA(A10)-1;0));1)))
  • Vzorec potvrdit kombinací Ctrl+Shift+Enter (je to maticový, ne běžný vzorec)

Problémy:

  • Sečte pouze číslice čísla, nepokračuje až k jedné číslici
  • Maticové vzorce nezvládnou mobilní zařízení

Nenapadá někoho, jak tohle vyřešit? Alespoň ten druhý problém. Podle mě to nejde.

No můžeš někam vložit čislo (třeba do A1) a pak někam tohle…
=CELÁ.ČÁST(A1/1000)+
+CELÁ.ČÁST((A1-1000CELÁ.ČÁST(A1/1000))/100)+
+CELÁ.ČÁST((A1-1000
CELÁ.ČÁST(A1/1000)-100CELÁ.ČÁST((A1-1000CELÁ.ČÁST(A1/1000))/100))/10)+
+A1-1000CELÁ.ČÁST(A1/1000)-100CELÁ.ČÁST((A1-1000CELÁ.ČÁST(A1/1000))/100)-10CELÁ.ČÁST((A1-1000CELÁ.ČÁST(A1/1000)-100CELÁ.ČÁST((A1-1000*CELÁ.ČÁST(A1/1000))/100))/10)
atd…
Je to sice magořina, ale maticový to neni :smiley:

po poradě s http://geowiki.hidden.cz/wiki/Ciferace mi funguje tohle:
do A1 napsat ciferovaná čísla
a někam jinam tohle
=KDYŽ(A1=0;0;KDYŽ(MOD(A1;9)=0;9;MOD(A1;9)))

(testováno na WM5)

Nedelejte prosim chaos v terminologii. "Ciferny soucet" je opravdu jen soucet cifer cisla. To cosi, kdy opakovane provadite ciferne soucty tak dlouho, dokud nevyjde jednociferny, se nejcasteji (i tady ve wiki) oznacuje jako "ciferace".
Matematicky se ciferace nejlepe vyjadri jako zbytel po deleni deviti (pokud vyjde zbytek 0 a cislo obsahovalo aspon jednu nenulovou cifru, je ciferace 9).

Alkes: Jo, to je opravdu magořina :slight_smile:

rsc_cz: Výborně, ciferace do jednociferného výsledku je vyřešena. Tak teď ještě přijít na rozumný vzorec pro součet jednotlivých číslic.

Excel moc neumím, ale co nějakou rekurzí?
ciferný součet = 0

Když je dekadický logaritmus čísla větší než nula, pak ciferný součet += celá část(číslo/10^celá část(dekadický logaritmus čísla)), číslo /= 10. A znovu dokola s tím zmenšeným číslem

Ciferny soucet moc jednoduse nepujde, bud vzorec stylu alkesova, nebo rekurze. Ale do logaritmu bych se nepoustel, vystacil bych s mod a div (pro prirozena cisla): sum=0; dokud x>0 delej {sum+=x mod 10; x=x div 10};

No, excel je trochu hloupej, takže viz alkeš.

Ale jinak nejjednodušší způsob je nahradit ‘’ za ‘+’ a vyhodnotit.

(Nahrazování sice excel má, ale nahrazovat prázdný řetězec neumí…, přitom je to jediné logické chování co provést, když se má nahradit prázdný řetězec. No a vyhodnocování řetězce jsem v excelu už vůbec nenašel.)

Jo a v excelu funguje dobře i funkce ČÁST(A1;2;1) sice to vrátí druhou číslici jako text, ale hned jak ji pokusíte s něčím sečíst tak se správně převede na číslo. Problém je že pokud si řeknete o číslici která tam už není tak to vrátí prázdný řetězec, to ale spraví konkatenace s nulou. Takže ciferný součet pro 4 cifry může vypadat takhle:

= ( 0 & ČÁST(A1;4;1) ) + ( 0 & ČÁST(A1;3;1) ) + ( 0 & ČÁST(A1;2;1) ) + ( 0 & ČÁST(A1;1;1) )

EDIT: teda teď jsem se pořádně na to alkešovo podíval, no neni to moc zoptimalizované, takže alkešovo stylem raději takhe (do 4 cifer):

=CELÁ.ČÁST(MOD(A1/1000;10))+CELÁ.ČÁST(MOD(A1/100;10))+CELÁ.ČÁST(MOD(A1/10;10))+MOD(A1;10)

Celou část a Mod lze vzájemě prohazovat.

EDIT2: #hodnota u ČÁST(A1,2,1) vzniká až sečtením prázdného řetězce, odstavec opraven.

EDIT3: Teď jsem si přečet pořádně co dělá ten mareklův vzorec a koukám, že jsem objevil ameriku.

Takže nejjednodušší je asi napsat si do A1 číslo, do B1 =SUMA(C1:Z1) a do C1 napsat hodnotu =0+(0&ČÁST($A1;SLOUPCE($C1:C1);1))
a pak si nakopírovat obsah c1 do d1, e1 až kolik cifer budete potřebovat.

Asi budete štěkat, že to není k tématu vlákna, ale mě přijde počítání ciferného součtu excelem jako lov na vrabce protiletadlovým kanónem - to je takovej problém to sečíst z hlavy?
Na zamyšlení: Kolik ciferných součtů spočítáte ručně za dobu, kterou strávíte vymýšlením algoritmů výpočtu c.s., čtením tohodle vlákna, odpověďmi…

Dodatek k Numirovi: Kolik ciferných součtů ročně počítáte?! Tohle se přece nemůže vyplatit, krom toho, že než to zadám do mobilu, tak na kalkulačce to mám 3x :wink:

Ale jinak nic proti a klidně se snažte :slight_smile:

Tedy, já jsem sice ciferný součet v souvislosti s geocachingem počítal asi dvakrát, ale tady jde přece o to, že když se objeví zapeklitý oříšek, je třeba ho rozlousknout, i kdyby to byla kravina, ne? :wink:

Já když v geocachingu sčítám 2+2 tak to dělám excelem, protože na tři matematické operace s malými čísly z hlavy připadá jedna moje chyba. No choďte se dívat o dvě desetiny minuty tam a zpátky. To radši ten excel, ve kterém můžu okamžitě a kdykoli zkontrolovat celý postup.

Jde o to, ze na vypocet v excelu se clovek muze daleko vic spolehnout, plus muze delat citlivostni analyzu, tj. hrat si se vstupy a sledovat jak se mu meni vysledek. Souradnice, ktere v excelu vylezou muzou byt rovnou zformatovany pro export do Mapsourcu, anebo se tlacitkem muzou promitnout na mapy.cz, excel automaticky muze pocitat vzdalenost od uvodnich souradnic nebo od predchozi stage,atd atd…

Jinak potvrzuju, ze ikdyz jsem z matiky mel vzdycky jednicky, tak vetsinou mam prumerne 1 chybu na kazde stagi multiny kterou pocitam na papire…

Můj návrh vychází z důkladné analýzy celého problému. Po 2dcl veltlínského zeleného navrhuji tento postup:
Číslo nepsat do jedné buňky, ale po jednotlivých číslicích vepsat do sousedních buněk, které se nakonec prostě sečtou.
Samozřejmě též musím povrdit, že i prostý součet tří číslic dokáže v reálu zapříčinit zajímavou procházku :slight_smile:

Jenze to cislo muze byt vysledkem nejakeho vypoctu…

To dozajista, ale otázka zněla … (4 dcl a končím, ráno musím do práce:-)

Pravda, není to tak dávno, co jsem měl u cache vzorec 018° 1(2xC)… C bylo dva. A já suvereně dosadil, že 2x2=2 a vůbec mi to nepřišlo divné, že mi to hodilo úplně mimo trasu :smiley: Dokonce jsem tam došel B)

Jak tak koukám, tak jsem špatně pochopil původní zadání :slight_smile:

Když jsem si teď ale hrál s Excelem tak se ukázalo, že počítá s maximálně 15ti cifernými čísly (hodnoty na 16 a dalším místě nahradí nulou), takže by mělo fungovat tohle:

do A1 napsat číslo a někam jinam tohle

=KDYŽ(DÉLKA(A1)>15;"zadané číslo je příliš dlouhé (zadej max 15 číslic)";HODNOTA(0&ČÁST(A1;1;1))+HODNOTA(0&ČÁST(A1;2;1))+HODNOTA(0&ČÁST(A1;3;1))+HODNOTA(0&ČÁST(A1;4;1))+HODNOTA(0&ČÁST(A1;5;1))+HODNOTA(0&ČÁST(A1;6;1))+HODNOTA(0&ČÁST(A1;7;1))+HODNOTA(0&ČÁST(A1;8;1))+HODNOTA(0&ČÁST(A1;9;1))+HODNOTA(0&ČÁST(A1;10;1))+HODNOTA(0&ČÁST(A1;11;1))+HODNOTA(0&ČÁST(A1;12;1))+HODNOTA(0&ČÁST(A1;13;1))+HODNOTA(0&ČÁST(A1;14;1))+HODNOTA(0&ČÁST(A1;15;1)))

EDIT: přidal jsem si to do geocaching_tools.xls na http://rsc.hyperlinx.cz/cp1250/gc/gc_programy.php

Dovolil bych si malý ciferátor pro PDA z vlastní zahrádky :wink:

Nazdar,

já používám tenhle prográmek http://www.speedfreak.info/geocaching/geocacher_java_midlet.html a docela mi vyhovuje. Uznávám ale, že následné možnosti zpracování výsledků jako v Excelu tomu chybí. Zase to má jiné schopnosti a třeba to někomu i pomůže.