Avatar billede sas_mart Nybegynder
11. februar 2008 - 18:04 Der er 5 kommentarer og
1 løsning

Lave Krydskombinationer mellem 2 kolonner.

Jeg har et ark hvor der står følgende:
Kolonne A          Kolonne B
X2525              A
X3562              B
X3546              C

Jeg søger en løsning der kan gange A kolonnen igennem alle kombinationer i B dvs. X2525 A, X2525 B, X2525 C, X3562 A, X3562 osv. Dvs et eller andet =""& ??? &" "& ??? &""

Hvis det giver mening....
Avatar billede bak Forsker
11. februar 2008 - 18:32 #1
Her er en makro, der kan gøre det.
Resultatet leveres i kolonne C

Sub test2()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim resultat()
   
    Set rng1 = Range("A1:A" & Range("A65536").End(xlUp).Row)
    Set rng2 = Range("b1:b" & Range("b65536").End(xlUp).Row)
   
    ReDim resultat(1 To rng1.Cells.Count * rng2.Cells.Count)
    For Each c In rng1
        For Each c1 In rng2
            x = x + 1
            resultat(x) = c & c1
        Next
    Next

    Range("C1").Resize(x) = Application.Transpose(resultat)

End Sub
Avatar billede bak Forsker
11. februar 2008 - 18:33 #2
Hvis du skal have melleumrum imellem skal du nok bruge

resultat(x) = c & " " & c1
Avatar billede sas_mart Nybegynder
12. februar 2008 - 11:20 #3
Super - hvis du smider et svar så skal jeg acceptere :-) Dog hvis jeg må være lidt krævende og nysgerrig. Ville man kunne dele det op så man fik kolonne A indholdet i kolonne C men kolonne A stående selvstændigt i D - dvs

Kolonne A          Kolonne B    Kolonne C      Kolonne D
X2525              A              X2525            A
X3562              B              X2525            B
X3546              C              X2525            C
                                  X3562            A
                                  osv.          osv.
Avatar billede bak Forsker
12. februar 2008 - 11:48 #4
Sådan ?

Sub Test_Delt()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim resultat()
   
    Set rng1 = Range("A1:A" & Range("A65536").End(xlUp).Row)
    Set rng2 = Range("b1:b" & Range("b65536").End(xlUp).Row)
   
    ReDim resultat(1 To rng1.Cells.Count * rng2.Cells.Count, 1 To 2)
    For Each c In rng1
        For Each c1 In rng2
            x = x + 1
            resultat(x, 1) = c
            resultat(x, 2) = c1
        Next
    Next

    Range("C1").Resize(x, 2) = resultat

End Sub
Avatar billede sas_mart Nybegynder
15. februar 2008 - 10:16 #5
Det er bare super, tak for hjælpen :-)
Avatar billede bak Forsker
15. februar 2008 - 10:42 #6
så skal du bare lige acceptere svaret :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester