datumi - izračun par zadev

Pomoč pri delu z MS Excelom
Odgovori
mimmy
Prispevkov: 6
Pridružen: Pe Mar 03, 2006 2:12 pm

datumi - izračun par zadev

Odgovor Napisal/-a mimmy »

Živijo!

Potrebovala bi pomoč pri malo bolj elegantni izpeljavi problemov in sicer:

1. Imam seznam datumov rojstnih dni ljudi z različnimi letnicami rojstva. Rada bi postavila formulo, da mi v naslednjo celico izpiše mesec rojstva - npr. če ima en rojstni dan 15.1., se mi izpiše JANUAR

2. pa bi rada označevala te iste ljudi po astroloških znamenjih: torej, če ima rojstni dan 15.1., da se mi izpiše, da je KOZOROG

Saj vem, da se da to reševati tako po kmečko, vendar pa tovzame veliko časa, še posebej, če gre to za stalno mesečno prakso - pa če imaš seznam par tisoč ljudi, je še toliko teže.

Hvala za kakršnokoli pomoč!
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

  1. V sosedno celico zapišite formulo:

    Koda: Izberi vse

    =MONTH(A1)
    kjer je A1 pač seveda celica z datumom rojstva. S tem boste v celici dobili mesec rojstva. Da bi se namesto številke izpisal tekst pa izberite celico z rezultatom in meni Oblika/Celice - izberite zavihek 'Številke' in v padajočem seznamu izberite opcijo 'Po meri', ter vnesite obliko 'mmmm' (brez narekovajev - samo 4x mali m)
  2. Za rešitev drugega problema pa boste najprej morali vnesti posebno tabelo, za katero boste porabili dve koloni. V prvo kolono boste vnesli prvi datum znamenja v drugo pa znamenje. Nad to tabelo boste uporabili funkcijo VLOOKUP, o kateri si lahko več preberete tudi v tem forumu.
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Glede astroloških znamenj:

Spodnjo kodo skopirajte v Modul vašega zvezka s spiskom oseb. Saj veste Alt+F11...Če Modula še ni, potem enega vstavite! (Insert Modul)

Koda: Izberi vse

Public Function Znak_zodiaka(Rojstni_dan As Date) As String

    Dim iDan_v_letu As Integer
    
    iDan_v_letu = Dan_v_letu(Rojstni_dan)
    
    If Year(Rojstni_dan) Mod 4 = 0 And iDan_v_letu > 59 Then
        iDan_v_letu = iDan_v_letu - 1
    End If
    
    If iDan_v_letu < 20 Then
        Znak_zodiaka = "Kozorog"
    ElseIf iDan_v_letu < 50 Then
        Znak_zodiaka = "Vodnar"
    ElseIf iDan_v_letu < 81 Then
        Znak_zodiaka = "Ribi"
    ElseIf iDan_v_letu < 111 Then
        Znak_zodiaka = "Oven"
    ElseIf iDan_v_letu < 142 Then
        Znak_zodiaka = "Bik"
    ElseIf iDan_v_letu < 173 Then
        Znak_zodiaka = "Dvojčka"
    ElseIf iDan_v_letu < 205 Then
        Znak_zodiaka = "Rak"
    ElseIf iDan_v_letu < 236 Then
        Znak_zodiaka = "Lev"
    ElseIf iDan_v_letu < 267 Then
        Znak_zodiaka = "Devica"
    ElseIf iDan_v_letu < 297 Then
        Znak_zodiaka = "Tehtnica"
    ElseIf iDan_v_letu < 327 Then
        Znak_zodiaka = "Škorpijon"
    ElseIf iDan_v_letu < 357 Then
        Znak_zodiaka = "Strelec"
    Else
        Znak_zodiaka = "Kozorog"
    End If


End Function

Function Dan_v_letu(Datum As Date) As Integer

    Dim iMesec As Integer
    Dim iDan As Integer
    
    iMesec = Month(Datum)
    iDan = Day(Datum)
    
    Dan_v_letu = 0
    If iMesec > 1 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 2 Then
        Dan_v_letu = Dan_v_letu + 28
        ' Dodan dan za prestopno leto
        If Year(Datum) Mod 4 = 0 Then
            Dan_v_letu = Dan_v_letu + 1
        End If
    End If
    If iMesec > 3 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 4 Then
        Dan_v_letu = Dan_v_letu + 30
    End If
    If iMesec > 5 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 6 Then
        Dan_v_letu = Dan_v_letu + 30
    End If
    If iMesec > 7 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 8 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 9 Then
        Dan_v_letu = Dan_v_letu + 30
    End If
    If iMesec > 10 Then
        Dan_v_letu = Dan_v_letu + 31
    End If
    If iMesec > 11 Then
        Dan_v_letu = Dan_v_letu + 30
    End If
    
    ' Dodani dnevi v trenutnem mesecu
    Dan_v_letu = Dan_v_letu + iDan

End Function
Sedaj imate na voljo dve funkciji; prva je Znak_zodiaka in druga Dan_v_letu, ki prvi samo pomaga, čeprav je uporabna tudi sama. Bolj pomembna za vas je prva. Sedaj predpostaviva, da se vaš spisek z imeni oseb, nahaja od druge vrstice naprej in imate v stolpcu A osebe, v stolpcu B rojstne datume, želite pa imeti astrološko znamenje v stolpcu C. Torej v celico C2 vstavite funkcijo Znak_zodiaka, oz. vpišite:

Koda: Izberi vse

=Znak_zodiaka(B2)
in dobili boste astrološko znamenje za izbrani datum. Zdaj samo skopirajte celico C2 do konca vašega spiska in v trenutku boste imeli znamenja horoskopa za kompleten spisek oseb.

Pa veliko uspeha pri "šloganju" 8)
lp,

cedra
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

cedra, za dan v letu bi lahko uporabili funkcijo DAYS360 :mrgreen:
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Verjetno bi se res dala uporabiti tudi vaša predlagana funkcija. Vendar pa, če z vašo predlagano funkcijo, npr. hočem izvedeti, kateri dan v letu je npr. 1.11.2008 in vzamem start datum v vaši predlagani funkciji 31.12.2007, dobim rezultat funkcije, da je 1.11.2008, 301. dan v letu, kar je NAROBE, s funkcijo Dan_v_letu pa, da je 1.11.2008 306. dan v letu, kar je PRAVILNO. Predlagana funkcija razdeli leto na 12 mesecev po 30 dni. Komu to pride prav ne vem. Finančnikom?

Ne trdim, da se ne da, tudi z vašo funkcijo dobiti pravilen rezultat, vendar se nisem spuščal v Help, ker je več ali manj nerazumljiv. Zato sem pač uporabil funkcijo Dan_v_letu, ki tudi bolj ustreza zadani nalogi.
lp,

cedra
Odgovori