Keresés

Új hozzászólás Aktív témák

  • föccer

    nagyúr

    válasz #77257183 #53409 üzenetére

    Rakd össze úgy a munka1 munkalapot, ahogy a képen van. A oszlopban sorszám, Boszlopban a sorozat elemei. F2-be a lépések száma, F3 F4 eredményt ad. Gomb legyen kirakva fejlesztő eszköz menöből. Ha kiraktad, akkor jobb klikk rajta, makró hozzárendelése, ott rányomsz az újra gombra. Nyílik a VBA editor. A megjeleö üres részen megjeleik egy Sub Gomb1_Click() End Sub sorok. E közé kell berakni az általam írt kódot. (vigyázz az én kódomban is benne van a Sub ---- End Sub sorok, ezt nem kell bemásolni.

    Ha minden okás, akkor visszalépsz a munkafözetre és ha megnyomod a gombot, akkor már számol is.

    Bármekkora lépésszámot beírhat, ami belefér az integerbe. A kód nem számolja ki a fibonachi számot, csak kiveszi a B oszlopból a megfelelő elemet.

    üdv, föccer

  • Mutt

    senior tag

    válasz #77257183 #53400 üzenetére

    Szia,

    Itt az én makrós változatom.

    Option Explicit
    Dim fibonacci(1000) As Variant  'megtalált fibonacci számok listája

    Sub Valaszt()
        Dim c As Long
        Dim r As Double
        Dim pozicio As Long
        'Rnd() függvénynek kell, különben nem lesz igazán véletlenszám
        Randomize
            
        '1-es poziciótól indulunk
        pozicio = 1
            
        With ActiveSheet
            'fejléc a füzetre
            .Range("A1") = "Lépés"
            .Range("B1") = "Pozíció"
            .Range("C1") = "Véletlen szám"
            .Range("D1") = "Fibonacci szám"
            
            '100 lépéses ciklus
            For c = 1 To 100
                r = Rnd()
        
                'fel-le lépkedünk a listában
                If r < 0.5 Then
                    pozicio = pozicio + 1
                Else
                    If pozicio > 2 Then
                        pozicio = pozicio - 2
                    Else
                        pozicio = 1
                    End If
                End If
            
            'kiírtajuk a kapott eredeményeket
            .Cells(c + 1, "A") = c
            .Cells(c + 1, "B") = pozicio
            .Cells(c + 1, "C") = r
            .Cells(c + 1, "D") = FibonacciNum(pozicio)
            
            Next c
        End With
    End Sub
    'rekurzív fibonacci szám generátor
    Function FibonacciNum(n As Long)
        
        If Not IsEmpty(fibonacci(n)) Then
            FibonacciNum = fibonacci(n)
            Exit Function
        End If
        
        If n = 0 Then
            FibonacciNum = 0
            fibonacci(0) = 0
            Exit Function
        End If
        
        If n = 1 Then
            FibonacciNum = 1
            fibonacci(1) = 1
            Exit Function
        End If
        
        FibonacciNum = FibonacciNum(n - 1) + FibonacciNum(n - 2)
        fibonacci(n) = FibonacciNum
    End Function

    üdv

  • föccer

    nagyúr

    válasz #77257183 #53400 üzenetére


    Makró beszúrása, ha a munkalapon vagy, akkor alt+F11.
    Gombot a fejlesztőeszközök menöből lehet kirakni.

    Munka1 munkafüzeten, ez a makró:

    Sub Gomb1_Click()
    Dim Fib_sorszam As Integer
    Dim Lepes_szam As Integer
    Dim i As Integer
    Fib_sorszam = 1
    Lepes_szam = Sheets("Munka1").Range("F2").Value
    For i = 1 To Lepes_szam
      If Application.RandBetween(0, 1) = 0 Then
        Fib_sorszam = Fib_sorszam + 1
      End If
    Next
    Sheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).Value
    Sheets("Munka1").Range("F4").Value = Fib_sorszam
    End Sub

    ps: egyébként nagyon érzékeny az eredmény arra, hogy az első 1-2-3 lépésben mennyi pozitív lépés van.

  • lappy

    őstag

    válasz #77257183 #53400 üzenetére

    Talán ez járható út
    Megszamolod a 0.5 nel nagyobb számokat es kivonod a 0.5 nel kisebb számokat majd a kapott értékkel meg kell keresni a szamsor ahanyadik elemét

  • #77257183

    törölt tag

    válasz #77257183 #52002 üzenetére

    Közben rájöttem hogyan kell, már nem aktuális a kérdésem!
    Be kellett kapcsolnom az excel bővitményeket és van statisztikai bővitmény véletlen szám generátorral.

  • Mutt

    senior tag

    válasz #77257183 #51411 üzenetére

    Szia,

    "...a kiszámolt dátum az legyen ahová már megtörtént a gólos oszlopokba az adatbevitel..."
    Ha a gólok oszlopa alapból üres és csak akkor kerül kitöltésre (akár 0-val ha már lement a mecs), akkor ez a képlet.
    =NAGY(SZŰRŐ($A$1:$A$1000;(($B$1:$B$1000=J2)+($C$1:$C$1000=J2))*($D$1:$D$1000<>""));5)

    Kis magyarázat: vannak olyan feltételek, amelyek ha egyszerre teljesülnek az jó nekünk (pl. 2 számot eltaláltunk az 5-ös lottón), illetve olyanok amelyek egymástól függetlenül teljesülnek az a jó (pl. beakarok menni a lakásba, akkor az is jó ha van lakáskulcsom, de az is jó ha van vki otthon aki be fog engedni).
    Az első az ÉS kapcsolat, a másik a VAGY.

    Excelben ÉS és VAGY függvények léteznek és érdemes használni őket, de nem műkődnek több cellán.
    Ha több cellán kell ÉS kapcsolatot használnunk, akkor a SZORZÁS jelet kell használni.
    (pl. (A1:A10="szombat")*(B1:B10="utazás") azon kombinációt adja vissza, ahol egy sorban szerepel szombat és melette utazás).

    VAGY-ot pedig az összeadással lehet szimulálni.
    (pl. (A1:A10="szombat")+(B1:B10="utazás") azon sorokat adja vissza, ahol egyik oszlopban van szombat, és másikban bármi más, illetve azokat ahol a második oszlopban van az utazás és az elsőben bármi.)

    A focis esetben előbb megkeressük, hogy B és C-oszlopokban mikor látható a keresett csapat neve. Ez VAGY (összeadás) feltétel. Ezek után ahol IGAZ-at kaptunk megnézzük, hogy a gól oszlop nem üres-e. Ez már ÉS lesz, mert csak azok kellenek ahol van eredmény rögzítve.

    üdv

  • Mutt

    senior tag

    válasz #77257183 #51386 üzenetére

    Szia,

    Excel verzió számot nem írtál, de 2 megoldás, amelyik mindegyike használ egy segédoszlopot.
    1. MS365 esetén SZŰRŐ (FILTER) függvénnyel megkeressük, hogy mikor volt a csapat legkorábbi mérkőzése az utolsó 5-ből.

    I2-ben a képlet (az első 1000 sort nézi, bővítsd ha szükséges, illetve nézi hogy otthon vagy vendégként játszott, ha csak egyik kell akkor a plusz jel előtti vagy utáni rész törölhető):
    =NAGY(SZŰRŐ($A$1:$A$1000;($B$1:$B$1000=J2)+($C$1:$C$1000=J2));5)

    2. Korábbi verzió esetén az I2 képlete (itt csak otthon játszást nézi a képlet!):
    =SZORZATÖSSZEG(NAGY(($B$2:$B$1000=J2)*($A$2:$A$1000);5))

    Ezek után a többi értéket SZUMHATÖBB és DARABHATÖBB-el lehet számolni.
    Győzelem: =DARABHATÖBB(B:B;J2;F:F;1;A:A;">="&I2)+DARABHATÖBB(C:C;J2;F:F;2;A:A;">="&I2)
    Vereség: =DARABHATÖBB(B:B;J2;F:F;2;A:A;">="&I2)+DARABHATÖBB(C:C;J2;F:F;1;A:A;">="&I2)
    Szerzett gólok: =SZUMHATÖBB(D:D;B:B;J2;A:A;">="&I2)+SZUMHATÖBB(E:E;C:C;J2;A:A;">="&I2)
    Kapott gólok: =SZUMHATÖBB(E:E;B:B;J2;A:A;">="&I2)+SZUMHATÖBB(D:D;C:C;J2;A:A;">="&I2)
    Pontok: =SZUMHATÖBB(G:G;B:B;J2;A:A;">="&I2)+SZUMHATÖBB(G:G;C:C;J2;A:A;">="&I2)

    A képletekben az első rész otthoni, a második a vendégként elért értéket adja. Ha csak egyik kell akkor töröld a nem kívánt részt.

    Ha szeretnél Excel-t tanulni, akkor ezt a feladatot Power Query-ben csoportosítással, majd sorbarendezéssel és pár oszlop beszúrásával is meg lehet oldani. Ehhez legalább Excel 2013-as verzió kell.

    üdv

  • Fferi50

    Topikgazda

    válasz #77257183 #51400 üzenetére

    Szia!
    A DARABHATÖBB függvény minden kritérium tartománya mindig a segédoszlopban megadott sortól a tartomány végéig tart: pl.
    =DARABHATÖBB(INDIREKT("$B"&F2):$B$127;$E2;INDIREKT("$C" & $F2):$C$127;$F2)
    Ugyanígy a SZUMHATÖBB függvénynél is a kritérium tartományokat így kell meghatározni:
    =SZUMHATÖBB(INDIREKT("$D" & $F2):$D$127;INDIREKT("$B"&F2):$C$127;$E2)
    Üdv.

  • Fferi50

    Topikgazda

    válasz #77257183 #51391 üzenetére

    Szia!
    Arra van szükséged, hogy a legutolsó x mérkőzés kezdő sorát meghatározd a tartományod számára. Csak a tartomány meghatározásra egyszerűsítve a feladatot segédoszloppal lehet megoldani szerintem: F2 cella képlete:
    =NAGY(HA($B$2:$B$127=$E2;SOR($B$2:$B$127);HA($C$2:$C$127=$E2;SOR($B$2:$B$127);""));5)
    Ez a tömbképlet megadja, hol található a tartomány végétől visszafelé számolva az 5. olyan sor, amelyben az adott csapat neve van. Mivel mindkét oszlopban szerepelhet, ezért kell a kétszeres ha függvény. Ha csak az egyik oszlopot (hazai/vendég) szeretnéd tudni - utolsó x hazai ill. vendég eredményt, akkor csak az adott oszlopra kell a ha függvényt felírni.
    A tömbképletet Shift+Ctrl+Enter kombóval kell lezárni, az Excel pedig kapcsos zárójelbe teszi.
    A H2 cella képlete:
    =DARABTELI(INDIREKT("$B"&F2):$C$127;$E2)
    Ez is húzható lefelé.
    Mutatja, hogyan alkalmazd a tartomány meghatározásához a segédoszlopot az indirekt függvénnyel. Itt csak azt mutatja, hogy valóban 5 darab tétel van az adott sortól kezdődő tartományban.
    Üdv.

  • föccer

    nagyúr

    válasz #77257183 #51386 üzenetére

    SZUMHATÖBB és a DARABHATÖBB függvények lesznek a barátaid. Ha nem bírsz vele, akkor hétfőn összedobom neked.

Új hozzászólás Aktív témák

Hirdetés