stefano
Gebruiker
- Lid geworden
- 22 mei 2004
- Berichten
- 865
Beste,
Ik wil van een bestand de rijen samenvoegen op voorwaarde dat die rijen in de eerste kolom A hetzelfde getal hebben staan.
De eerste rij bevat de kolomhoofdingen.
Als cel A2 en cel A3 identiek zijn, dan mogen die 2 rijen samengevoegd worden tot 1 rij.
Als cel A2 en cel A3 en cel A4 gelijk zijn, dan mogen die 3 rijen samengevoegd worden tot 1 rij.
Als cel A2 verschilt van cel A3 dan mag de rij behouden blijven.
Ik heb dit topic al eens gepost vorig jaar en de oplossing van Ginger werkt perfect. Alleen is toen uitgegaan dat er ALTIJD 3 opeenvolgende rijen met dezelfde inhoud bestonden in kolom A. Ondertussen kan het gebeuren dat dit niet altijd het geval is.
Het bestaande bestand ( zie bijlage TPM_1.xls ) mag overschreven worden door de nieuwe samengevoegde data.Bekijk bijlage TPM_1.XLS
De code die Ginger toen postte ( en waar ik dus geen jota van begrijp ) vermeld ik hieronder:
Ik wil van een bestand de rijen samenvoegen op voorwaarde dat die rijen in de eerste kolom A hetzelfde getal hebben staan.
De eerste rij bevat de kolomhoofdingen.
Als cel A2 en cel A3 identiek zijn, dan mogen die 2 rijen samengevoegd worden tot 1 rij.
Als cel A2 en cel A3 en cel A4 gelijk zijn, dan mogen die 3 rijen samengevoegd worden tot 1 rij.
Als cel A2 verschilt van cel A3 dan mag de rij behouden blijven.
Ik heb dit topic al eens gepost vorig jaar en de oplossing van Ginger werkt perfect. Alleen is toen uitgegaan dat er ALTIJD 3 opeenvolgende rijen met dezelfde inhoud bestonden in kolom A. Ondertussen kan het gebeuren dat dit niet altijd het geval is.
Het bestaande bestand ( zie bijlage TPM_1.xls ) mag overschreven worden door de nieuwe samengevoegde data.Bekijk bijlage TPM_1.XLS
De code die Ginger toen postte ( en waar ik dus geen jota van begrijp ) vermeld ik hieronder:
Code:
Dim i As Long, x As Long
Dim ii As Integer
Dim T1 As Variant
Const lSC As Long = 2 'regelnummer van de startcel
T1 = Cells(lSC, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - (lSC - 1), 140)
ReDim T2(1 To 140, 1 To 1)
For i = 1 To 140
T2(i, 1) = T1(1, i)
Next i
x = 1
For i = 2 To UBound(T1, 1)
If T1(i, 1) = T1(i - 1, 1) Then
For ii = 1 To 140
If Replace(T1(i, ii), " ", "") <> "" Then T2(ii, x) = T1(i, ii)
Next ii
Else
x = x + 1
ReDim Preserve T2(1 To 140, 1 To x)
For ii = 1 To 140
T2(ii, x) = T1(i, ii)
Next ii
End If
Next i
With Sheets.Add(after:=Sheets(ActiveSheet.Index))
With .Previous
.Range("A1:EP1").Copy Cells(1, 1)
.Cells.Copy
End With
.Cells.PasteSpecial xlPasteFormats
.Cells(2, 1).Resize(UBound(T2, 2), 140) = WorksheetFunction.Transpose(T2)
.Cells(1, 1).Select
End With
Application.CutCopyMode = False
Laatst bewerkt: