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

Sorteren binnen 1 cel

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Hallo Forumers,


Ik heb hulp nodig bij het sorteren van de inhoud van één cel.
Voorbeeld: in de cel staat bv de volgende waarde: GB, NL, Fr, D, B, Den, P, Nor

Mbv VBA wil ik de cel, als deze wordt gewijzigd, sorteren. Het resultaat
van bovenstaand voorbeeld wordt dan: B, D, Den, Fr, GB, NL, Nor, P
Het gaat mij met name om het sorteer-gedeelte van de vraag.

De waarden in de cel worden gescheiden door een komma, punt-komma,
min (-) of een slash (/) en altijd gevolgd door een spatie (behalve de laatste
waarde in de cel). Het aantal waarden dat in deze cel kan voorkomen ligt
tussen 0 en 12 (0 als de inhoud van de cel wordt gewist).

Wie kan mij hierbij op weg helpen ?
 
Laatst bewerkt:
Beste Stone52 ;)

Je kan een macro opnemen en deze dan oproepen met een knopje op je werkblad.

Groetjes Danny. :thumb:
 
Beste Stone52 ;)

Heb een macro aangemaakt met de recorder, bekijk zelf maar in toegevoegd bestandje.
Natuurlijk kan het korter, maar het is maar een voorbeeld dat iedereen kan aanmaken.
Dit sorteert de volledige cel (niet een gedeelte ervan)

Groetjes Danny. :thumb:
 

Bijlagen

Laatst bewerkt:
Hallo,

Helaas gaat die macro niet werken als de waarden in 1 cel staan.
Je zult elke waarde tijdelijk in een andere cel moeten onderbrengen, dat bereik dan sorteren en de waarden opnieuw samenvoegen in de betreffende cel.

Groet,

Winelover
 
Beste winelover;)

Helaas gaat die macro niet werken als de waarden in 1 cel staan.
Je zult elke waarde tijdelijk in een andere cel moeten onderbrengen, dat bereik dan sorteren en de waarden opnieuw samenvoegen in de betreffende cel.

Dit had ik toch aangegeven ?

Dit sorteert de volledige cel (niet een gedeelte ervan)

Groetjes Danny. :thumb:
 
Beste Stone52 ;)

Heb het handmatig gedaan met formules, enkel sorteren in met een macro.
Zie bestandje en wat uitleg erbij.

Groetjes Danny. :thumb:
 

Bijlagen

Beste Stone52 ;)

Heb het handmatig gedaan met formules, enkel sorteren in met een macro.
Zie bestandje en wat uitleg erbij.

Groetjes Danny. :thumb:

Danny,
2 opmerkingen:
Ik werk met Excel2007 en het resultaat van het Plakken Speciaal gaat niet goed (1e karakter wordt niet meegenomen)
Werk alleen voor 2 reeksen - 1 komma.
 
Voor dit probleem heb ik een tijdje terug code geschreven, en op mijn site geplaatst. Het staat bij Excel, dan VBA, dan "Sorteren in een cel".

Wigi
 
Beste anton44 ;)

2 opmerkingen:
Ik werk met Excel2007 en het resultaat van het Plakken Speciaal gaat niet goed (1e karakter wordt niet meegenomen)
Werk alleen voor 2 reeksen - 1 komma.

Ik werk uitsluitend met Excel 2007 en heb geen problemen ivm speciaal plakken.
Gewoon selecteren RMK kopieren en cel selecteren RMK speciaal plakken en dan op waarden en OK.

Groetjes Danny. :thumb:
 
Beste anton44 ;)



Ik werk uitsluitend met Excel 2007 en heb geen problemen ivm speciaal plakken.
Gewoon selecteren RMK kopieren en cel selecteren RMK speciaal plakken en dan op waarden en OK.

Groetjes Danny. :thumb:

Danny, met alle respect.. Ik zie wat ik zie
Als ik jou bestand open en de macro laat runnen door deze te starten krijg ik als resultaat B,abc ipv abc, GB Idem andere rijen.
 
Beste anton44 ;)

Ik heb hulp nodig bij het sorteren van de inhoud van één cel.
Voorbeeld: in de cel staat bv de volgende waarde: GB, NL, Fr, D, B, Den, P, Nor

Mbv VBA wil ik de cel, als deze wordt gewijzigd, sorteren. Het resultaat
van bovenstaand voorbeeld wordt dan: B, D, Den, Fr, GB, NL, Nor, P
Het gaat mij met name om het sorteer-gedeelte van de vraag.

Ik denk dat we op een verschillende golflengte zitten :confused:

Het gaat om het sorteer-gedeelte was de vraag van Stone52
Dus volgens mij moet er alles na de komma blijven staan, en moet er oplopend gesorteerd worden voor de komma.
Uitkomst is dan B, abc ipv GB, abc zoals in mijn opgave tenzij ik de vraag verkeerd geïnterpreteerd hebt.

Groetjes Danny.
 
Laatst bewerkt:
Beste anton44 ;)



Ik denk dat we op een verschillende golflengte zitten :confused:

Het gaat om het sorteer-gedeelte was de vraag van Stone52
Dus volgens mij moet er alles na de komma blijven staan, en moet er oplopend gesorteerd worden voor de komma.
Uitkomst is dan B, abc ipv GB, abc zoals in mijn opgave tenzij ik de vraag verkeerd geïnterpreteerd hebt.

Groetjes Danny.

Ik denk dat je de vraag nog eens goed moet lezen. Je zult daarna mogelijk een ander standpunt innemen.
Gr. Ton
 
Hallo,

Ondertussen heb ik van de site van WiGi de VBA-code opgehaald en
ben ik eea gaan uitproberen. De code doet niet wat ik graag zou willen.
Mogelijk zit het venijn in het gebruik van de komma.
Daarom een voorbeeld bijgevoegd met de vraag om nog wat uitleg en
assistentie.

Ik gebruik Excel 2002.
 

Bijlagen

Laatst bewerkt:
Code:
Sub SorterenInEenCel()
' Wim Gielis
' wimmekegielis@hotmail.com
' 04/13/2007
' Module to sort multiple lines in one cell alphabetically
' Also on http://www.wimgielis.be

Dim l As Long
Dim arrSubParts As Variant
Dim rngSort As Range
Dim rng As Range
Dim strToSort As String
Dim str1 As String, str2 As String
Dim lLoop As Long, lLoop2 As Long

Set rngSort = Application.InputBox("Duid de te sorteren " & _
    "cellen aan.", "Cellenbereik", Selection.Address, Type:=8)
If rngSort Is Nothing Then Exit Sub

'Application.ScreenUpdating = False

For Each rng In rngSort
    strToSort = rng.Value
    If strToSort <> "" Then
        
        Do While InStr(strToSort, ", " & ", ") > 0
            strToSort = Replace(strToSort, ", " & ", ", _
                ", ")
        Loop
        Do While Left(strToSort, 1) = ", "
            strToSort = Right(strToSort, Len(strToSort) - 1)
        Loop
        Do While Right(strToSort, 1) = ", "
            strToSort = Left(strToSort, Len(strToSort) - 1)
        Loop
        
        arrSubParts = Split(strToSort, ", ")
        
        For lLoop = 0 To UBound(arrSubParts)
            For lLoop2 = lLoop To UBound(arrSubParts)
                If UCase(arrSubParts(lLoop2)) < _
                   UCase(arrSubParts(lLoop)) Then
                    str1 = arrSubParts(lLoop)
                    str2 = arrSubParts(lLoop2)
                    arrSubParts(lLoop) = str2
                    arrSubParts(lLoop2) = str1
                End If
            Next lLoop2
        Next lLoop
        
        rng.Value = Join(arrSubParts, ", ")
    End If
Next rng

Application.ScreenUpdating = True

End Sub

Wigi
 
Beste Stone52 ;)

Met een omweg ben ik erin geslaagd.

Gebruik laatste bestand.
Selecteer A1 ga dan naar tekst naar kolommen klik op gescheiden, volgende vink spatie en komma aan dan volgende, bestemming F1.
Selecteer F1:O1 RMK kopieren, selecteer F3 RMK klik op transponeren en OK.
Selecteer F3:F11 en sorteer van A naar Z.
Ga dan naar A2 en zet volgende formule hierin.

Code:
=F3&", "&F4&", "&F5&", "&F6&", "&F7&", "&F8&", "&F9&", "&F10&", "&F11

Selecteer cel A2 RMK kopieren, selecteer A3 plakken speciaal klik op waarden en OK.

Dit zal het moeten zijn.
Heb geen tijd meer om het in een macro te stoppen.

Groetjes Danny. :thumb:
 
Code:
Sub SorterenInEenCel()
' Wim Gielis
' wimmekegielis@hotmail.com
' 04/13/2007
' Module to sort multiple lines in one cell alphabetically
' Also on http://www.wimgielis.be

Dim l As Long
Dim arrSubParts As Variant
Dim rngSort As Range
Dim rng As Range
Dim strToSort As String
Dim str1 As String, str2 As String
Dim lLoop As Long, lLoop2 As Long

Set rngSort = Application.InputBox("Duid de te sorteren " & _
    "cellen aan.", "Cellenbereik", Selection.Address, Type:=8)
If rngSort Is Nothing Then Exit Sub

'Application.ScreenUpdating = False

For Each rng In rngSort
    strToSort = rng.Value
    If strToSort <> "" Then
        
        Do While InStr(strToSort, ", " & ", ") > 0
            strToSort = Replace(strToSort, ", " & ", ", _
                ", ")
        Loop
        Do While Left(strToSort, 1) = ", "
            strToSort = Right(strToSort, Len(strToSort) - 1)
        Loop
        Do While Right(strToSort, 1) = ", "
            strToSort = Left(strToSort, Len(strToSort) - 1)
        Loop
        
        arrSubParts = Split(strToSort, ", ")
        
        For lLoop = 0 To UBound(arrSubParts)
            For lLoop2 = lLoop To UBound(arrSubParts)
                If UCase(arrSubParts(lLoop2)) < _
                   UCase(arrSubParts(lLoop)) Then
                    str1 = arrSubParts(lLoop)
                    str2 = arrSubParts(lLoop2)
                    arrSubParts(lLoop) = str2
                    arrSubParts(lLoop2) = str1
                End If
            Next lLoop2
        Next lLoop
        
        rng.Value = Join(arrSubParts, ", ")
    End If
Next rng

Application.ScreenUpdating = True

End Sub

Wigi

Nu werkt die ook in het voorbeeldbestand. Als tip: scheidingsteken door een msg_box laten invullen ?
 
Allen hartelijk dank voor de inzet !

Met de oplossing van WiGi ben ik verder gegaan: deze voldoet prima.
Ik zal later deze week de code verder aan de eigen wensen aanpassen.

Nog 1 aanvullende vraag: in de uiteindelijke vorm wil ik de vraag ("duid de
te sorteren . . . . ") vervangen door het adres van de cel waar de cursor
op dat moment op staat.
Is dat te doen met rngSort = Target.cell (of iets dergelijks - en natuurlijk
via de Intersect) ?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan