Keresés

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

  • Sziasztok!

    Olyan problémám lenne, hogy van egy bitang sok adatot tartalmazó munkafüzetem több munkalappal.

    A problémám:
    Bizonyos gyümölcsök random előfordulhatnak egy munkalapon belül, és azt kell megvizsgálnom, ha valamelyik gyümölcsnél szerepel az X akkor annak a gyümölcsnek van-e legalább 1 olyan esete ahol nem X szerepel, ha nincs akkor hibás.

    Hogy lehetne ezt úgy megoldani, hogy ne 10 perc legyen a futtatása, szóval minél egyszerűbb de hatékony megoldás kellene?

    Konkrét megoldást nem kérek, csak valami nyomot amin elindulhatnék.

    Köszi előre is!

    Kipróbáltam két oszloppal, 10 ezer sorban, de nehezítésképpen úgy, hogy az első 5000-ben csak X volt mindenhol, és az egyik gyümölcsnél később is csak X volt. Nem is igazán mérhető a futásidő, fél másodpercnél is kevesebb. Tehát vagy rengeteg oszlopod lehet, vagy sok százezer sor, vagy még egyéb tényezők. De a 10 perc mindenképpen túlzás.

    Tudom h nem kértél konkrétumot, de csak bemásolok ide egy rövidke scriptet, egyszerű megközelítésben, valami támpontot adhat azért.

    Option Base 1

    Sub t()

    Dim gimilc()
    Dim vannemX()
    Dim n%, i%
    Dim g As String

    n = 1
    ReDim Preserve gimilc(n)
    ReDim Preserve vannemX(n)

    gimilc(1) = Cells(2, 1).Value
    vannemX(1) = False
    If Cells(2, 2).Value <> "X" Then
    vannemX(1) = True
    End If
    For i = 3 To 10000
    g = Cells(i, 1).Value

    Dim gindex%
    gindex = -1
    For j = 1 To n
    If gimilc(j) = g Then
    gindex = j
    Exit For
    End If
    Next

    If gindex = -1 Then
    n = n + 1
    ReDim Preserve gimilc(n)
    ReDim Preserve vannemX(n)
    gimilc(n) = g
    vannemX(n) = False
    If Cells(i, 2).Value <> "X" Then vannemX(n) = True
    Else
    If vannemX(gindex) = False Then
    If Cells(i, 2).Value <> "X" Then vannemX(gindex) = True
    End If
    End If
    Next

    End Sub

  • csaszizoltan
    csendes tag

    Sziasztok!

    Olyan problémám lenne, hogy van egy bitang sok adatot tartalmazó munkafüzetem több munkalappal.

    A problémám:
    Bizonyos gyümölcsök random előfordulhatnak egy munkalapon belül, és azt kell megvizsgálnom, ha valamelyik gyümölcsnél szerepel az X akkor annak a gyümölcsnek van-e legalább 1 olyan esete ahol nem X szerepel, ha nincs akkor hibás.

    Hogy lehetne ezt úgy megoldani, hogy ne 10 perc legyen a futtatása, szóval minél egyszerűbb de hatékony megoldás kellene?

    Konkrét megoldást nem kérek, csak valami nyomot amin elindulhatnék.

    Köszi előre is!

    Szia!

    Gondolom az egyes celláinak elérése nem gyors vagy minden X találat után indítasz egy új átfésülést, ami fölösleges ezért
    Rakd tömbbe a gyümölcsneveket (ha sokféle van, kb 100-nál több akkor bináris fába, ahol a fa egyes mutatói még két tömbben helyezkednek el tömbindexként) és másik két ugyanakkora tömbbe, hogy van X benne és van nem X benne. Ez az algoritmus egyszer fog végigfutni a munkalapon.
    Érdekelne majd a "gyümölcsökre" megvalósított algoritmus, hogy beleszólhassak a gyorsabb futás érdekében.:)
    Üdv:)

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