Potreboval by som radu aká funkcia mi sčíta čísla v bunke s dátumom .
Zadané číslo je dátum napr. 10.10.2001 správny výsledok 10+10+2+0+0+1= 23
Vďaka
excel sčítanie čísel v bunke
-
vladenko007
VIP
- Príspevky: 3733
- Registrovaný: 02 jan 2007, 1:00
- Bydlisko: Znova Košice
Re: excel sčítanie čísel v bunke
A nešlo by to zapisovať tak aby si mal každé číslo v inej bunke? Ako na obrázku. Potom by to šlo.
- Prílohy
-
- Excel.jpg (16.68 KiB) 543 zobrazení
Re: excel sčítanie čísel v bunke
Vďaka za radu
ale ja to potrebujem zapisovať ako dátum . Ten zápis , ako mi poradili inde vypadá takto :
V Bunke B1 je dátum a do bunky C2 napíšem tento vzorec
=DAY(B1)+MONTH(B1)+(ROUNDDOWN(YEAR(B1);-3)/1000)+(ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2)/100)+(ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2);-1)/10)+(YEAR(B1)- ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2); -1))
Má to jednu chybu , že to reaguje na dátumy až od roku 1900 .
ale ja to potrebujem zapisovať ako dátum . Ten zápis , ako mi poradili inde vypadá takto :
V Bunke B1 je dátum a do bunky C2 napíšem tento vzorec
=DAY(B1)+MONTH(B1)+(ROUNDDOWN(YEAR(B1);-3)/1000)+(ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2)/100)+(ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2);-1)/10)+(YEAR(B1)- ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3)-ROUNDDOWN(YEAR(B1)-ROUNDDOWN(YEAR(B1);-3);-2); -1))
Má to jednu chybu , že to reaguje na dátumy až od roku 1900 .
-
wintermute
Light Star
- Príspevky: 266
- Registrovaný: 07 júl 2009, 7:17
Re: excel sčítanie čísel v bunke
najjednoduchšie a najistejšie bude, ak si napíšeš vlastnú funkciu
-stlač si alt+F11 pridaj modul.
budú ti stačiť príkazy mid() a cint(), ak zadávaš mesiace bez pevného počtu znakov (nie .03. ale len .3.), tak budeš potrebovať aj instr(), prípadne spllit().
ako ich použiť si vygoogliť hádam dokážešukáž
základný návod na vytváranie vlastných funkcií je napr tu:
edit:
Keďže som mal chvíľu čas, tak som zbúchal dokopy pár riadkov, ktoré dokonca aj fungujú. Neriešil som však zle zadané vstupy - čiže formát bunky s dátumom by mal byť text. Ak to máš ako dátumy, tak si ich napr skopíruj do texťáku a odtiaľ naspäť, prípadne podumaj ako inak ich skonvertovať na string.
-stlač si alt+F11 pridaj modul.
budú ti stačiť príkazy mid() a cint(), ak zadávaš mesiace bez pevného počtu znakov (nie .03. ale len .3.), tak budeš potrebovať aj instr(), prípadne spllit().
ako ich použiť si vygoogliť hádam dokážešukáž
základný návod na vytváranie vlastných funkcií je napr tu:
Kód: Vybrať všetko
http://www.vertex42.com/ExcelArticles/user-defined-functions.htmlKeďže som mal chvíľu čas, tak som zbúchal dokopy pár riadkov, ktoré dokonca aj fungujú. Neriešil som však zle zadané vstupy - čiže formát bunky s dátumom by mal byť text. Ak to máš ako dátumy, tak si ich napr skopíruj do texťáku a odtiaľ naspäť, prípadne podumaj ako inak ich skonvertovať na string.
Kód: Vybrať všetko
Public Function ScitajDatum(Vstup As Variant) As Integer
Dim Arr() As String
Dim tmpIN As String
Dim tmpOut, i As Integer
tmpIN = CStr(Vstup)
Arr = Split(tmpIN, ".", -1, vbTextCompare)
tmpOut = CInt(Arr(0)) + CInt(Arr(1))
For i = 1 To Len(Arr(2))
tmpOut = tmpOut + CInt(Mid(Arr(2), i, 1))
Next i
ScitajDatum = tmpOut
End FunctionRe: excel sčítanie čísel v bunke
Ďakujem pekne skúšal som to , ešte je podmienka ,
AK je súčet väčší ako 22 nech to sčíta ešte výsledné číslice .
napr. ak 1.10.1965 = 23 2+3=5
To makro je super , stretol som sa s tým prvý krát , Ďakujem za Váš čas .
AK je súčet väčší ako 22 nech to sčíta ešte výsledné číslice .
napr. ak 1.10.1965 = 23 2+3=5
To makro je super , stretol som sa s tým prvý krát , Ďakujem za Váš čas .
-
wintermute
Light Star
- Príspevky: 266
- Registrovaný: 07 júl 2009, 7:17
Re: excel sčítanie čísel v bunke
v pohode. to je len malá úprava:
Kód: Vybrať všetko
Public Function ScitajDatum(Vstup As Variant) As Integer
Dim Arr() As String
Dim tmpIN As String
Dim tmpOut, i As Integer
tmpIN = CStr(Vstup)
Arr = Split(tmpIN, ".", -1, vbTextCompare)
tmpOut = CInt(Arr(0)) + CInt(Arr(1))
For i = 1 To Len(Arr(2))
tmpOut = tmpOut + CInt(Mid(Arr(2), i, 1))
Next i
If tmpOut > 22 Then tmpOut = CInt(Mid(CStr(tmpOut), 1, 1)) + CInt(Mid(CStr(tmpOut), 2, 1))
ScitajDatum = tmpOut
End Function