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

nummeriek sorteren in text

Status
Niet open voor verdere reacties.

jeroenb93

Gebruiker
Lid geworden
29 jul 2019
Berichten
9
Is het mogelijk dmv een formule of vba code het volgende goed neer te zetten? nummeriek sorteren en de output moet er dan als volgt uit komen te zien.

achter elke ";"staat een nummer en achter elke ":' staat de value.


Hoop dat iemand mij kan helpen. Heb het bestand toegevoegd.


text.JPG
 

Bijlagen

  • example.xlsx
    9,2 KB · Weergaven: 34
En de input is altijd hetzelfde? Dus altijd dezelfde hoeveelheid te sorteren waarden?
 
Niet altijd hetzelfde

Nee helaas, die varieert. Kan ook 5 zijn of meer.
 
UDF
Code:
Function Sorteer(sTxt As String) As String
    Dim i As Long
    Dim Br
    Dim sq
    
    With CreateObject("System.Collections.Sortedlist")
        Br = Split(sTxt, ";")
        For i = 0 To UBound(Br)
            .Add Left(Br(i), InStr(Br(i), ":") - 1) * 1 + i / 1000, Br(i) & ""
        Next
        For i = 0 To .Count - 1
            Sorteer = Sorteer & ";" & .GetByIndex(i)
        Next
    End With
    Sorteer = Mid(Sorteer, 2)
End Function
 
nog een UDF:

Code:
Function F_snb(c00)
   sq = Split(c00, ";")
   
   With CreateObject("ADODB.recordset")
        .Fields.Append "getal", 3
        .Fields.Append "basis", 129, 30
        .Open
        
        For j = 0 To UBound(sq)
            st = Split(sq(j), ":")
            .AddNew Array(0, 1), Array(Val(st(0)), st(1))
            .Update
        Next
        .Sort = "getal"
      
        F_snb = Replace(Replace(Application.Trim(.GetString), vbTab, ":"), " " & vbCr, ";")
   End With
End Function
 
En nog één:
Code:
Function rebmog(sTxt As String) As String
    Dim ar1, ar2, i As Integer, sSort As String
    ar1 = Split(sTxt, ";")
    ReDim ar2(1 To UBound(ar1) + 1)
    For i = 1 To UBound(ar2)
        ar2(i) = Split(ar1(i - 1), ":")(0) + i / 1000000
    Next
    For i = 1 To UBound(ar2)
        sSort = sSort & ";" & ar1(Application.Match(Application.Small(ar2, i), ar2, 0) - 1)
    Next
    rebmog = Mid(sSort, 2)
End Function
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan