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

Gegevens van meerder regels samenvoegen op een regel

Status
Niet open voor verdere reacties.
Wat is de verwachte uitkomst? Wie is de relatie de DEALER_NAME of het SP_NO?
 
Laat het maar eens lopen.

Resultaat in blad2.

Code:
Sub hsv()
Dim sn, i As Long, j As Long, a As Long, n As Long
sn = Sheets("blad1").Cells(1).CurrentRegion
With CreateObject("scripting.dictionary")
  ReDim arr(UBound(sn), 0) As String
  For i = 2 To UBound(sn)
   .Item(sn(i, 1)) = .Item(sn(i, 1)) & sn(i, 2) & "_"
  Next i
    For i = 0 To .Count - 1
    a = 0
       arr(0, UBound(arr, 2)) = .keys()(i)
          For j = 1 To UBound(Split(.Item(.keys()(i)), "_"))
           arr(j, UBound(arr, 2)) = Split(.Item(.keys()(i)), "_")(j - 1)
          a = a + 1
          Next j
        ReDim Preserve arr(UBound(sn), UBound(arr, 2) + 1)
          If n < a Then n = a
     Next i
   Sheets("blad2").Cells(1).Resize(.Count, n) = Application.Transpose(arr)
   Sheets("Blad2").Columns.AutoFit
End With
End Sub
 

Bijlagen

Laatst bewerkt:
Zo Harry, dat hebt je snel gedaan! :thumb:
Top dank je wel.

Opgelost

Groeten,
Henning
 
Laatst bewerkt:
Goedemorgen Harry,

Ik heb net je mooie VBA uitgeprobeerd in het originele bestand, daarbij krijg ik de volgende melding:
HSV.png
Heb je daar een verklaring voor

Groeten,
Henning
 
Goedemorgen Harry,

Ik ben eruit! ;) ik heb het bestand verwerkt met een interval van ± 5000 regels en dat werkt.
Nogmaals bedankt.

Groeten,
Henning
 
Hallo Henning,

Misschien kun je een fictief bestandje maken met zoveel gegevens; kunnen we eens zien van het hoe en waarom.
 
Hallo Henning,

Helaas heb ik ook onvoldoende geheugen bij het uitvoeren van de code met de dictionary methode.

Met onderstaande code kom ik tot een dikke 14500 rijen aan gegevens (waar het omslagpunt ligt weet ik niet precies, maar net niet de 15000) met een snelheid van ± 16 seconden.

Test het eens op jouw pc.
Code:
Sub hsvtwee()
Dim sn, i As Long, ii As Long, z As Long, s As Long, a As Long, c00 As String, t As Single
t = Timer
sn = Blad1.Cells(1).CurrentRegion
ReDim arr(UBound(sn), UBound(sn)) As String


For i = 1 To UBound(sn)
    s = 0
    If InStr(c00, sn(i, 1) & "|") = 0 Then
              c00 = c00 & sn(i, 1) & "|"
              arr(z, 0) = sn(i, 1)
         For ii = i To UBound(sn)
            If sn(ii, 1) = sn(i, 1) Then
                       s = s + 1
               arr(z, s) = sn(ii, 2)
             If a <= s Then a = s
           End If
         Next ii
       z = z + 1
    End If
 Next i
Blad2.Cells(1).Resize(UBound(arr), a + 1) = arr
Debug.Print Format(Timer - t, "0.000"); " _hsvtwee"
End Sub
 
Harry,

Alvast bedankt, ik ga het maandag uitproberen.

Fijn weekend!

Groeten,
Henning
 
Hallo Harry,

Even wat later dan gepland. ;-)
Op mijn eigen Pc krijg ik gelijk een geheugen fout melding. Op mijn werk Pc deze melding:
HVSTwee.PNG
Geen man over boord! Zo als ik eerder aangaf heb ik het probleem anders opgelost.
Ik wil je toch dit laten weten en je bedanken voor je inspanning. :thumb:

Groeten,
Henning
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan