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

lijst met artikeleenheden gemakkelijk letters en cijfers scheiden

Status
Niet open voor verdere reacties.

ppjhp

Gebruiker
Lid geworden
12 jan 2012
Berichten
7
Beste,

Ben al even aan het kijken en zoeken geweest maar kom er niet uit, toch maar een vraagstelling hier plaatsen. #durftevragen

Hoe kan ik in een lijst met artikeleenheden, gevormd door een combinatie van cijfers en letters (aantal tekens staat niet vast) toch een scheiding maken van cijfers en letters?

voorbeeld set:
a2170
b0025
b0300
b0400
b0500
b1000
b1500
b2000
b3000
b30kg
baal
bd100
bd12

Ik ben al aan het rommelen geweest met =Rechts(A2,lengte(A2)-MIN(zoek({0,1,2,3,4,5,6,7,8,9},A3&"0123456789"))+1) maar ik maak ergens een denk of formule-fout denk ik.

Bij voorbaat dank voor een reactie mijn zeer gewaardeerde excel-fundamentalisten... :-)

Gr. Patrick
 
Met deze functie kun je het even proberen. Invoeren als =jv(A1)

Code:
Function jv(cell)
For i = 1 To Len(cell)
  c00 = Mid(cell, i, 1)
  a = a & IIf(IsNumeric(c00), "-" & c00 & IIf(Mid(cell, i + 1, 1) = "", "", "-"), c00)
Next
jv = Replace(a, "--", "")
End Function
 
Hoe kan ik in een lijst met artikeleenheden, gevormd door een combinatie van cijfers en letters (aantal tekens staat niet vast) toch een scheiding maken van cijfers en letters?
Je kan de vraag ook heel anders lezen: hoe kan ik de cijfers apart zetten van de letters? En dan krijg je zoiets:

Code:
Function CijfertjeScheiden(celletje As String) As String
Dim sNum As String, sTxt As String, txt As String
    
    For i = 1 To Len(celletje)
        txt = Mid(celletje, i, 1)
        Select Case Asc(txt)
            Case 48 To 57
                sNum = sNum & txt
            Case 65 To 90, 97 To 122
                sTxt = sTxt & txt
        End Select
    Next i
    CijfertjeScheiden = sNum & IIf(sTxt = "", "", IIf(sNum = "", "", "-")) & sTxt
End Function
 
Goed voorbeeldje zou weer veel verduidelijken...
 
Deze zal hetzelfde doen als die van Alex, maar dan wel de 30 gescheiden van kg:d

Code:
Function jv(cell, j)
For i = 1 To Len(cell)
  c00 = Mid(cell, i, 1)
  a = a & IIf(IsNumeric(c00), "-" & c00 & IIf(Mid(cell, i + 1, 1) = "", "", "-"), c00)
Next
jv = Split(Replace(a, "--", ""), "-")(j - 1)
End Function

Invoeren als onderstaand en dan doortrekken.

Code:
=IFERROR(jv($A2;COLUMN(A1));"")
 
Alle opties gehad nu? :P

Code:
Function jveer(cell, i)
With CreateObject("VBscript.Regexp")
        ar = Array("\d", "[^0-9]")
        .Pattern = ar(i - 1)
        .Global = True
jveer = .Replace(cell, "")
End With
End Function

=jveer($A2;COLUMN(A1))
 
Ander optie.

Code:
Sub hsv()
Dim sv, sv2
 With CreateObject("VBscript.Regexp")
  Cells(1).CurrentRegion.Name = "b"
    .Pattern = "\d"
    .Global = True
      sv = Split(.Replace(Join([transpose(b)], "|"), ""), "|")
    .Pattern = "[a-zA-Z]"
      sv2 = Split(.Replace(Join([transpose(b)], "|"), ""), "|")
  [b].Offset(, 2).Resize(, 2) = Application.Transpose(Array(sv, sv2))
 End With
End Sub
 
Ha JVeer, AlexCel, OctaFish, VenA en HSV,

Excuus, had natuurlijk gewoon even een voorbeeldbestand bij moeten voegen! Zo vaak plaats ik hier echter niet iets... kijk eigenlijk alleen altijd maar rond op zoek naar een oplossing. :-)

Super Super bedankt... Ik ga in eerste instantie aan de slag met het excel-voorbeeld van AlexCel, en zal op een later moment de VBA-codes eens nalopen / uitspitten.
Ik zal mijn vraag afsluiten.

Thanks en tot ziens, somewhere, someplace, somehow!
Patrick
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan