• 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.

Transponderen en samenvoegen

Status
Niet open voor verdere reacties.

imans314

Gebruiker
Lid geworden
22 jan 2001
Berichten
79
Ik heb een bestand waar in kolom A een aantal vaartuignamen staan, en kolom B een aantal nummers.
De vaartuignamen staan er soms dubbel in.

wat ik nodig heb is:
Kolom A: Vaartuignaam
Kolom B-??: nummers

is het mogelijk om dit redelijk snel te doen met een macro of Powerquery?

Ik heb een voorbeeld bijgevoegd.
 

Bijlagen

  • Omzetten nummers.xlsx
    9,9 KB · Weergaven: 23
bedoel je zoiets?
 

Bijlagen

  • Omzetten nummers.xlsm
    25,9 KB · Weergaven: 37
Inene wegschrijven:

Code:
Sub jec()
 Dim ar, i As Long
 ar = Sheets(1).Cells(1).CurrentRegion
 
 With CreateObject("scripting.dictionary")
   For i = 1 To UBound(ar)
     .Item(ar(i, 1)) = .Item(ar(i, 1)) & IIf(Len(.Item(ar(i, 1))), ", ", "") & ar(i, 2)
   Next
   Sheets(2).Cells(1).Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
  End With
End Sub

Voor Power Query is dit de M-Code

Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Grp = Table.Group(Source, {"Vaartuig"}, {{"Count", each _, type table [Vaartuig=nullable text, Nummer=nullable text]}}),
    cAdd = Table.AddColumn(Grp, "Custom", each [Count][Nummer]),
    vExt = Table.RemoveColumns(Table.TransformColumns(cAdd, {"Custom", each Text.Combine(List.Transform(_, Text.From), ", "), type text}),{"Count"})
in
    vExt
 
Laatst bewerkt:
Ook simpel voor insiders met:

Code:
=UNIEK(Huidig!A2:A11)

En:
Code:
=ARRAYTOTEXT(FILTER(Huidig!B$2:B$11;Huidig!A$2:A$11=B2))
Of:
Code:
=ARRAYTOTEXT(SORTEREN(FILTER(Huidig!B$2:B$11;Huidig!A$2:A$11=D2);;-1))
 
ARRAYTOTEXT is gebonden aan regionale instellingen. Bij jou geeft hij waarschijnlijk komma's maar hier puntkomma.
Is ook al te gebruiken voor niet-insiders.
 
Geeft hier ook puntkomma's, maar dat zal vast niet zo interessant zijn door welk scheidingsteken het wordt gescheiden.

Mooi om te weten dat het nu standaard is; geldt dat voor alle functies die eerst alleen voor insiders waren.
Mag ik vragen waar je die informatie weghaalt?
 
Hier nog een leuke.
Als je de =UNIEK(Huidig!A2:A11) in E2 zet en vervolgens deze in F2:

Code:
=BYROW(E2#;LAMBDA(r;TEKST.COMBINEREN(", ";;FILTER($B$2:$B$11;$A$2:$A$11=r))))
 
Nog mooier, het hele zootje in 1x

Code:
=LET(x;UNIEK(A2:A11);KIEZEN({1\2};x;BYROW(x;LAMBDA(r;TEKST.COMBINEREN(", ";;FILTER($B$2:$B$11;$A$2:$A$11=r))))))
 
Heel mooi,
Het sorteert ook echt goed in de tweede kolom van groot naar klein.

Jammer dat bij veranderingen in het eerste blad de formules niet worden bijgewerkt in tegenstelling van de mijne (frappant).
 
Bij mij lijkt dat niet het geval te zijn. Wat verander je precies?
 
Ik zie het al; je verwijst niet naar het ander blad waar ik de wijzigingen deed.
Dus dat sorteren van hoog naar laag wat ik dacht is ook niet waar (ik dacht dat het ook mooi gelijk sorteerde).

De evaluatie van de LAMBDA functie vind ik maar triest (slecht) wil je het voor een eerste keer doorgronden (ongeldig,ongeldig).
Als je de functie begrijpt is er niets aan de hand.

Hoe zit dat in jouw Excel?
 
Klopt, evalueren werkt niet met LET en LAMBDA. De variabelen in de formule krijgen niet direct waarde toegekend. Kan inderdaad soms vervelend zijn…
 
Ik ben heel blij met de Power Query optie JV, dank je wel.

Is het mogelijk om in Power Query de nummers aflopend te sorteren, dus van hoog naar laag.
 
Waarom sorteer je dat niet vooraf in Excel ?
 
Sorteren doe je ook in power query met 1 klik
 
Excel bevat ook draaitabellen.
Verschillende items in 1 cel opslaan is strijdig met de opzet van Excdel.

Code:
Sub Macro1()
    ReDim st(11) As Boolean
    Set cl = Sheet1.Cells(1).CurrentRegion
    
    With ActiveWorkbook.PivotCaches.Create(1, cl, 4).CreatePivotTable(cl.Cells(1).Offset(, cl.Columns.Count + 2), "PT_00", 4)
       With .PivotFields("Vaartuig")
        .Orientation = 1
        .Subtotals = st
        .AutoSort 2, .Caption
        End With
        With .PivotFields("Nummer")
           .Orientation = 1
            .Subtotals = st
        End With
       .RowAxisLayout 1
       .ColumnGrand = False
       .RowGrand = False
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan