• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Data uit kolom in rijen zetten

Status
Niet open voor verdere reacties.

Mhunt

Nieuwe gebruiker
Lid geworden
21 jan 2016
Berichten
2
Hallo allemaal,

Ik heb een excelbestand met daarin aankopen van klanten: klantid, wanneer hebben ze de aankoop gedaan, bonnummer, product, aantal, prijs.
Klanten die vaker aankopen hebben gedaan komen in verschillende rijen te staan. Echter, ik wil deze graag in 1 rij hebben op basis van het klantid. Ik zoek dus naar een manier om alle aankopen van dezelfde klant achter elkaar te krijgen in 1 rij.

Op dit forum heb ik al eerder een soortgelijk probleem langs zien komen, ik heb geprobeerd de oplossing daarvan te gebruiken alleen kom er helaas nog steeds niet helemaal uit. In de bijlage is eea verduidelijkt. De macro's die in de eerdere post waren gemaakt werken bijna helemaal goed, maar helaas net niet en ik krijg ze zelf niet werkend. Het probleem is namelijk dat de waarde in B2 niet wordt meegenomen door de macro's.

Hopelijk kan iemand mij helpen :)

Bekijk bijlage Data uit kolom in rij zetten.xlsx
 
Laatst bewerkt:
Kijk eens naar deze macro:
Code:
Sub tsh()
    Dim Br
    Dim y As Long, i As Long, j As Long
    Dim It, Ix
    
    Br = Cells(1).CurrentRegion
    y = 5 * Evaluate("Max(CountIf(A2:A" & UBound(Br) & ",A2:A" & UBound(Br) & "))") + 1
    ReDim Ix(y)
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(Br)
            It = .Item(Br(i, 1))
            If IsEmpty(It) Then It = Ix
            It(0) = Br(i, 1)
            For j = 0 To 4
                It(j + It(y) * 5 + 1) = Br(i, j + 2)
            Next
            It(y) = It(y) + 1
            .Item(Br(i, 1)) = It
        Next
        Sheets(Application.Max(2, Sheets.Count)).Cells(2, 1).Resize(.Count, y) = Application.Index(.Items, 0)
    End With
End Sub
 

Bijlagen

Laatst bewerkt:
Code:
Sub M_snb()
    Cells(1).CurrentRegion.Copy
    
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
       .GetFromClipboard
       c00 = .GetText
    End With
    
    sn = Filter(Split(c00, vbCr), "ID", False)
        
    Do
       c01 = Split(sn(j), vbTab)(0)
       c02 = c02 & "|" & Replace(Replace(Mid(Join(Filter(sn, c01), "_"), 2), "_" & c01, ""), Chr(9), "_")
       sn = Filter(sn, c01, False)
    Loop Until UBound(sn) = -1
    sn = Split(Mid(c02, 2), "|")
    
    Cells(30, 1).Resize(UBound(sn) + 1) = Application.Transpose(sn)
    Cells(30, 1).CurrentRegion.TextToColumns , , , , 0, 0, 0, 0, -1, "_"
End Sub
 
In de bijlage staat een oplossing met matrixformules, analoog aan de genoemde oplossing van Rebmog.
Matrixformules vergen veel rekenkracht en kunnen je werkmap behoorlijk vertragen als deze erg lang wordt. Kijk toch eens naar de VBA-oplossingen. Je kunt macro's uitvoeren met ALT-F8.
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan