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

Velice jednoduše, ve vba si napíšu funkci
funcrion ciferace(numero) a pak jí zadam do buněk
viděl bych to nejspíš v duchu (memi to VBa syntax, musel bych to mít před sebou):
ret=0
for i in range(0:len(numero)):
ret=ret+numero[i]

pridat modul



Public Function cif_souc(numero1 As Integer) As Integer
Dim ret As Integer
Dim numero As String
numero = CStr(numero1)
ret = 0
For i = 0 To Len(numero)
  ret = ret + CInt(numero(i))
      
Next i

cif_souc = Len(numero)

End Function

Public Function ciferace(num As Integer) As Integer
Do While 1
 If Len(num) > 1 Then
    num = cif_souc(num)
 Else
    Exit Do
End If
Loop

End Function



hmm, ale nechce behat
bud najit chybu, nebo nainstalovat openoffice a pouzit python

Neni cifrovani to, kdyz moravskej sohaj stepuje a mava u toho kloboukem??

Heh, funguje to hezky, ale nevím proč. Asi jsem něco četl pod lavicí místo abych dával pozor :slight_smile: Má to nějaké matematické vysvětlení? (Stačí odkaz) Díky :wink:

EDIT: Teď jsem to vyzkoušel v Mobile Excelu pro PDA i pod Wokny. Použití funkce MOD má v Excelu jednu podstatnou mouchu: Neumí pracovat s čísly většími než 1,207,959,551 , což nestačí pro ciferaci 15 platných číslic v souřadnicích. Takže se raději vrátím ke svému polopatickému ciferátoru.

Ty VYJADŘUJ SE O NÁS VALACHÁCH A FOLKLORISTECH SLUŠNĚ! Nebo si Tě najdu :@

Díky za reakce. Pro PDA s Windows Mobile je zřejmě nejlepší Dandrova tabulka. Makro ve Visual Basicu bohužel na mobilních platformách nebude fungovat.

Já sám v terénu používám program QuickSheet na Nokii E61i. Ten bohužel nezvládá funkci Hodnota, takže to asi dál budu muset dělat ručně.

A umí to alespoň INT, tj. zaokrouhlování dolů? Pokud ano, není problém to přepsat tak, aby v buňkách byla vždy čísla a nemuselo se pracovat s řetězci :wink:

Celkem mne překvapuje kolik energie a času kačeři dávájí do "problému" součtu pár čísel. :wink:

řešily se tu i "závažnější" problémy :wink:
Považuj to za zadání mystery a přidej se :wink:

Dandra: brzy to zkusím. Teď mi nefunguje spojení s mobilem, a nechce se mi restartovat notebook :slight_smile:

Přesně! A nebýt toho, že jsme tenkrát v osmdesátým prvním pozvali na výměnný pionýrský pobyt černé bratry geokačery z Bronxu, tak by dnes neexistoval breakdance B)

Ad celé vlákno: Takhle se mi to líbí. Se jednou větou zeptám Marka, jak se dělá v Excelu ciferný součet a o pár dnů pozdějc tady máme švestičky z Danovy zahrádky :smiley:

Vysvětlení je celkem jednoduché (akorát ho asi napíšu složitě).
Jedna věc je dekadický zápis: 1234 = 10001+1002+103+14
Druhá věc je obecný princip, že když a a b mají stejný zbytek po dělení devíti a stejně tak c a d tak i a+b a c+d mají stejný zbytek po dělění devíti. To platí i pro násobení.
Třetí věc je, že každá mocnina desítky má zbytek po dělení devíti jedna (protože 100000 - 1 jsou samé devítky).
No a když se to dá dohromady tak to dá, že součet cifer má stejný zbytek po dělení devíti jako původní číslo. No ale součet cifer je normální číslo, takže i jeho součet cifer má stejný zbytek, a tak dále, až dostaneme jednu cifru. Ta má mít stále stejný zbytek po dělení devíti. Tím zbytkem je ale ta cifra sama pokud se nejedná o devítku.

Pokud by jste někdy chtěli ověřovat rodná čísla, kde se každá lichá číslice odčítá a každá sudá přičítá, tak podobnou úvahou lze dojít k tomu, že rodné číslo je dělitelné jedenácti. (protože 10 a -1 má stejný zbytek po dělení jedenácti a 100 má zbytek po dělení jedenácti 1 (99 je dělitelné jedenácti).

LOL, psát midlet na počítání ciferace.. 

CIFERACE(x) = ((x - 1) mod 9) + 1

Nula je speciální případ.

LOL oživovat 6 let mrtvé vlákno.

Zde je speciální případ.

LOL, psát midlet na počítání ciferace.. 

CIFERACE(x) = ((x - 1) mod 9) + 1

Nula je speciální případ.

1) máš šest let zpoždění ;)

2) tohle řešení už tu zaznělo

3) otázka byla na ciferný součet, ne ciferaci

Celkem mne překvapuje kolik energie a času kačeři dávájí do "problému" součtu pár čísel. ;)

asi toho máš vyluštěno hodně málo. Někdy nemáš jinou možnost, než hledat rozumné výsledky z několika set nebo dokonce tisícovek možných. A počítej to ručně, když navíc původní hodnoty můžeš měnit !

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...

Styď se, za takto jednoduché řešení !!!

A co hodit do A1 to ciferovany cislo, do B2 =INT(A1/10) to zkopirovat postupne do C1 ... x1 a pod to do B2 =MOD(A1,10) a zkopirovat postupne do C2 ... x2 a do B1 dat sumu pres C2 ... x2. Je to nakopirovany rychle, nic slozityho a funguje to.

For by byl, kdyby se třeba v tak moc starem vlakně ptala nějaka zoufala slečna, kde sehnat postinor… a uspokojivou odpoved by si přečetla až když maly začal chodil do školy…

to by byla dobra povidka cyberpunkoveho věku :slight_smile: