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

Samenvoegen tekst die in variabele rijen is weggeschreven

Status
Niet open voor verdere reacties.

Ronnospare

Nieuwe gebruiker
Lid geworden
11 aug 2015
Berichten
3
Ik zit met het volgende probleem:

Ik heb een rij met gegevens van een bepaalde klant (kolom A t/m I). De data in kolom I (commentaar veld) is op meerdere rijen in kolom I weggeschreven en de cellen voorafgaand aan kolom I (A:H) zijn dan leeg.
Ik wil de data uit kolom I samenvoegen en plaatsen in kolom J.

Omdat het gaat om 30000 rijen en de ene keer het commentaar veld (kolom I) is weggeschreven op 1 rij, dan weer op 6 rijen, of zelfs 10 rijen, kan ik geen vaste formule bedenken.
Ik had het volgende bedacht, als is dit beperkt tot het samenvoegen van maximaal 4 rijen:

=ALS(A2="";"";ALS(EN(A2<>"";A3<>"");I2;ALS(EN(A2<>"";A3="";A4<>"");TEKST.SAMENVOEGEN(I2;I3);ALS(EN(A2<>"";A3="";A4="";A5<>"");TEKST.SAMENVOEGEN(I2;I3;I4);ALS(EN(A2<>"";A3="";A4="";A5="";A6<>"");TEKST.SAMENVOEGEN(I2;I3;I4;I5);TEKST.SAMENVOEGEN(I2;I3;I4;I5))))))


Wie heeft een oplossing om dit makkelijk voor alle rijen (ongeacht de hoeveelheid weggeschreven regels) toe te passen?
 
Laatst bewerkt:
of met een eenmalige macro, deze verwijdert ook de overbodige info en kolom I

Code:
Sub klacht1()
Application.ScreenUpdating = False
For Each r In Range("A:A").SpecialCells(2)
c01 = ""

If r.End(xlDown).Row < 50000 Then
For Each cl In r.Offset(, 8).Resize(r.End(xlDown).Row - r.Row)
c01 = c01 & " " & Trim(cl.Value)
r.Offset(, 9).Value = Trim(c01)
Next
Else
r.Offset(, 9).Value = Trim(r.Offset(, 8).Value)
End If
Next
    'verwijdert de lege rijen in de kolom met de gesplitste klachten
    Application.DisplayAlerts = False
    Range("A1").AutoFilter
    ActiveSheet.Range("$A$1:$J$" & Cells(Rows.Count, 9).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="="
    ActiveSheet.Range("$A$2:$J$" & Cells(Rows.Count, 9).End(xlUp).Row).Delete
    Range("A1").AutoFilter
    Columns(9).Delete
End Sub

Niels
 
Is het een soort draaitabel die je uit een bepaald systeem krijgt?

Deze zet de gegevens in 'Blad2' bij het activeren van 'Blad2'

Code:
Private Sub Worksheet_Activate()
    ar1 = Sheets(1).Cells(1).CurrentRegion
    ReDim ar2(Sheets(1).Columns(1).SpecialCells(2).Count, 8)
    For j = 1 To UBound(ar1)
        If ar1(j, 1) <> "" Then
            For jj = 1 To 9
                ar2(jjj, jj - 1) = Trim(ar1(j, jj))
            Next jj
            jjj = jjj + 1
            Else
                ar2(jjj - 1, 8) = ar2(jjj - 1, 8) & " " & Trim(ar1(j, 9))
        End If
    Next j
    With ActiveSheet
        .Cells.ClearContents
        .Cells(1).Resize(UBound(ar2), 9) = ar2
    End With
End Sub
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan