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

Twee rijen samenvoegen tot één met kommascheiding

Status
Niet open voor verdere reacties.
Ja dat is wel het geval,
maar wanneer de inhoud van de cellen handmatig via de routine =A2&", "&A3 wordt gecombineerd, dan is er niets aan de hand.
Waarom is er bij de uitvoering van de macro misschien wel sprake van een limitatie? Is deze te verruimen?

Groet,
Jelle
 
Heb je de opmaak misschien op tekst ?
Probeer eens de Standaard (General) opmaak.
 
Daar staan de cellen al op.
Kan de code SAMENVOEGEN.TEKST een verschil uitmaken?

Groet jelle
 
Geen idee,
De limit is 255 karakters per cel, maar ik las dus net ergens op een buitenlandse site dat de opmaak er toe deed.

Google eens wat om "255 character limit in excel".
Misschien kom je nog wat tegen.
 
Kun je eens een bestandje plaatsen?
Kan ik er wat mee klooien.
 
Ik moet dan even een representatief stuk van de omvangrijke database eruitlichten.
Misschien kom ik er morgenochtend aan toe.

Vriendelijke groet en bedankt,

Jelle
 
Zo werkt het weer wel.
Code:
Sub hsv()
Selrow = Selection.Row
For j = 1 To 10
 Cells(Selrow, j) = Cells(Selrow, j) & ", " & Cells(Selrow + 1, j)
Next j
End Sub
 
Jelle, je maakt me toch een beetje benieuwd waar om wil je de uitgebreide omschrijvingen naast elkaar zetten in een cel?

Om de een of andere rede is er een probleem met lange teksten.

Bij deze macro gebeurt dat (nog) niet. Ik weet niet hoelang een tekst in een cel mag zijn.
Code:
Sub RijenSamenVoegen()
    Dim Temp As Range, R As Range
    Set Temp = Selection.Resize(1, 56)
    For Each R In Temp
        If R = "" Or R(2, 1) = "" Then
            T = ""
        Else
            T = ","
        End If
         R = R & T & R(2, 1)
    Next
End Sub
groet sylvester
 
De database bestaat uit meer dan 2000 rijen.
Deze moet teruggebracht worden naar ongeveer 500.
Daarom moeten de kenmerken en teksten per rij in elkaar geschoven worden.
Zodra de grote tekstblokken in één cel staan, dan moet ik inderdaad nog gaan editen en bijwerken.
Het is super gemakkelijk als ik de twee complete rijen in é´n keer kan samenvoegen, in plaats van per cel.
Daarom ben ik erg blij met de macro, maar nu nog de tekstomvang....

Groet, Jelle
 
Jelle, er komt in je tekst regelmatig een komma voor is zou voor een ander teken kiezen.
groet sylvester
 
Een cel kan 32k bevatten dus dat is het probleem niet. Je loopt tegen een beperking van de evaluate functie. Die kan intern geen strings langer dan 255 verwerken en kapt ze af. Stap met F8 door het volgende blokje, dat maakt het mss duidelijker. De instructie [B2 & B3] is een sterk vereenvoudigde versie van snb's oplossing.
Code:
Sub p1()

    Range("A1:A3").Formula = "=len(B1)"

    Range("B2:B3") = String(30, "A")
    Range("B1") = [B2 & B3] ' ok

    Range("B2:B3") = String(300, "A")
    Range("B1") = [B2 & B3] ' error
    Range("B1") = [B2] & [B3] ' ok
    Range("B1") = Range("B2") & Range("B3") ' ok
    
    Dim s As String, v As Variant
    [a1] = [rept("A",300)] ' error
    v = [rept("A",300)]
    s = [rept("A",300)]
    
End Sub
Twee algemene aanbevelingen: gebruik evaluate alleen als het niet anders kan (en dat is zelden); dimensioneer je variabelen expliciet (option explicit).

Als oplossing voor je vraag nog een variant:
Code:
Sub p2()
    Dim r as Range
    For Each r In Selection.Resize(, 51)
        r.Value = r.Value & ", " & r.Offset(1).Value
    Next r
    Selection.Offset(1).EntireRow.Delete
End Sub
 
@pixcel

???

Code:
Sub M_snb()
    Range("A1:E1") = String(300, "a")
    Range("A2:E2") = String(300, "b")
    Range("A3:E3") = [A1:E2&A2:E2]
    msgbox len([A3])
End Sub

Twee algemene aanbevelingen: gebruik evaluate alleen als het niet anders kan (en dat is zelden

Waar komt die wijsheid vandaan ? en zijn daarvoor ook nog argumenten ?
 
Laatst bewerkt:
Je vraagt je af waarom jouw voorbeeld wel werkt en het volgende niet?
Code:
Sub M_snb2()
    Range("A1") = String(300, "a")
    Range("A2") = String(300, "b")
    Range("A3") = [A1 & A2]
End Sub
Ik kan niet in de evaluate functie kijken dus ik weet het niet. Maar het zou met arrays te maken kunnen hebben. Wat denk jij?
 
Laatst bewerkt:
Ik vaag me iets anders af:

Code:
Sub M_snb2()
    Range("A1") = String(300, "a")
    Range("A2") = String(300, "b")
    Range("A3") = [A1] & [A2]
End Sub
 
@Pixcel

Ik wacht nog op enig argument voor je beweringen in #33....
 
Ik heb nu de volgende macrocode ingevoerd, en deze geeft inderdaad geen probleem meer met lange teksten.

Sub p2()
Dim r as Range
For Each r In Selection.Resize(, 51)
r.Value = r.Value & ", " & r.Offset(1).Value
Next r
Selection.Offset(1).EntireRow.Delete
End Sub


Nog een aanvullende vraag.
Kan in de macro een routine worden toegevoegd die de originele inhoud laat staan als de celinhoud van de te combineren cellen hetzelfde is?

Tot zover al reuze bedankt pixcel en snb.

Groet Jelle
 
Probeer eens:
if r.Value <> r.Offset(1).Value then r.Value = r.Value & ", " & r.Offset(1).Value
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan