Keresés

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

  • Mutt

    aktív tag

    válasz Agony #16623 üzenetére

    Hali,

    Sikerült megoldani végülis, de a lényeg az volt hogy adott 3 oszlop.
    Az első oszlopban 1 cella van aminek az értéke: DU
    A második oszlopban 33-45-ig vannak számok.
    A harmadik oszlopban 00-16-ig vannak számok.
    A harmadik oszlopban 00-99-ig vannak számok.

    Lemaradtam róla, de azért felraktam 2 megoldást ide.

    Az egyik makró For...Next ciklusokkal, szabadon választható elválasztó jellel.

    Sub Cartesian()
    Dim cimke1 As Long, cimke2 As Long, cimke3 As Long, cimke4 As Long
    Dim c1 As Long, c2 As Long, c3 As Long, c4 As Long
    Dim sor As Long

    sor = 1

    'megszámoljuk mindegyik részt hányszor kell ismételni
    cimke1 = WorksheetFunction.CountA(Range("A:A"))
    cimke2 = WorksheetFunction.CountA(Range("B:B"))
    cimke3 = WorksheetFunction.CountA(Range("C:C"))
    cimke4 = WorksheetFunction.CountA(Range("D:D"))

    If cimke1 * cimke2 * cimke3 * cimke4 > Rows.Count Then
    MsgBox "Egy lapra nem fér ki minden kombináció (" & cimke1 * cimke2 * cimke3 * cimke4 & ")!"
    End If

    Application.ScreenUpdating = False

    For c1 = 1 To cimke1
    For c2 = 1 To cimke2
    For c3 = 1 To cimke3
    For c4 = 1 To cimke4
    Cells(sor, "G") = Cells(c1, "A") & Cells(1, "E") & Cells(c2, "B") & Cells(1, "E") & Cells(c3, "C") & Cells(1, "E") & Cells(c4, "D") & ""
    sor = sor + 1
    Next c4
    Next c3
    Next c2
    Next c1

    Application.ScreenUpdating = True

    End Sub

    A másik valójában nem makró, hanem egy sima lekérdezés Accessben, amely azon alapul hogyha nincsenek a táblák összekötve akkor az RMDBS descartes-szorzatot (cartesian product) fog visszaadni, amely az összes lehetséges kombinációt tartalmazza.

    üdv.

    A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel

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