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

Tabel met tekst en getallen splitsen in 2 kolommen

Status
Niet open voor verdere reacties.

AlexCEL

Meubilair
Lid geworden
3 apr 2014
Berichten
8.338
Wie heeft een goed idee (M code) om getallen en tekst te scheiden met Power Query op de manier zoals in bijlage? (het echte bestand is bijna 7.000 regels).
 

Bijlagen

  • Tekst en cijfers in aparte kolommen met Power Query.xlsx
    12,1 KB · Weergaven: 37
Eventueel met een macro als je geen andere optie hebt. Zijn de getallen daadwerkelijk oplopend van 1 t/m ....?

Code:
Sub j_v()
With Sheets(1).ListObjects("Tabel1")
 ReDim jv(1 To .ListRows.Count, 1 To 2)
 For Each it In .DataBodyRange
   j = j + 1
    If Not IsNumeric(it) Then
      a = it
      jv(j, 1) = a
      j = j - 1
    Else
      jv(j, 1) = a
      jv(j, 2) = it
    End If
 Next
 Cells(2, 15).Resize(j, 2) = jv
End With
End Sub
 
Laatst bewerkt:
Code:
ReDim jv(.ListRows.Count, 1)

Code:
Cells(2, 15).Resize(j, 2) = jv
 
Code aanpassen.
Application.max zal fout gaan als de max 3 is natuurlijk.

edit: # van @jveer verwijderd zie ik.
 
Klopt, vandaar de wedervraag in mijn post
 
Tja, die wedervraag was onnodig geweest. :rolleyes:
 
@allen.
De getallen zijn niet oplopend. Dit was ter illustratie. In werkelijkheid zijn het factuurnummers.

En het moet via Power Query. Het is namelijk bedoeld als tussenstap in een gegevenstransformatie. Ik heb een vervelende uitdraai in pdf gekregen vanuit ons ERP systeem en wil het naar een overzichtelijke lijst transformeren. Lukt al aardig, maar op deze stap blijf ik steken... Ik moet de tekst en de factuurnummers op de een op andere manier in twee verschillende kolommen zien te krijgen. Kan er ook nog niet voldoende over vinden op internet. De beschrijving is lastig. Als je zoekt op splitsen van woorden en getallen dan krijg ik niet wat ik zoek.

Dus als iemand nog goede ideeën heeft?
 
AlexCEL,

dit is niet wat je vraagt (geen PowerQuery) maar kwam het laatst tegen om in het werkblad zelf te splitsen (Code van RedHead)

Code:
=LINKS(E10;MIN(VIND.SPEC({0\1\2\3\4\5\6\7\8\9};E10&1234567890))-1)

als je er niets mee kan doen, just forget it... :confused:

Rikja
 
Volgens mij klopt jouw voorbeeld niet. Ik weet niet hoe je aan het resultaat A 5 komt.

Door het type op te vragen kan je een eind komen.
PHP:
if Value.Type([Lijst]) = type text then [Lijst] else null
 

Bijlagen

  • Tekst en cijfers in aparte kolommen met Power Query.xlsx
    19,5 KB · Weergaven: 21
Op die route zat ik inmiddels ook ongeveer te experimenteren. Ik kom erachter dat schijnbaar de hele kolom als tekst gezien wordt. Waarschijnlijk door de import..

In bijlage zie je een stukje van mijn import ter illustratie. Het is de bedoeling een lijst met bedrijven te krijgen (waarvan de namen eerst ook nog eens verspreid staan over 3 kolommen) met daarachter de facturen, zoals in voorbeeld in #1. (en ja, de A 5 aldaar was incorrect).
 

Bijlagen

  • voorbeeldoverzicht.xlsx
    24,3 KB · Weergaven: 28
Laatst bewerkt:
Als factuurnummer 1 niet voorkomt dan kan het zo. Anders waarschijnlijk nog een extra stapje. Het kan waarschijnlijk nog iets efficiënter maar dan moet ik ook even jouw andere stapjes bekijken.
 

Bijlagen

  • voorbeeldoverzicht.xlsx
    24,7 KB · Weergaven: 15
Of

Code:
Sub M_snb()
  sn = Sheet1.ListObjects(1).DataBodyRange.Columns(2).Resize(, 2)
    
  For j = 1 To UBound(sn)
    If sn(j, 2) = "" Then
      c00 = sn(j, 1)
      sn(j, 1) = ""
    Else
      sn(j, 1) = c00
    End If
  Next

  Sheet1.ListObjects(1).DataBodyRange.Columns(2).Resize(, 2) = sn
End Sub
 
Laatst bewerkt:
Het kan inderdaad een stuk eenvoudiger. Als je deze formule
Code:
if [#"factuur"]=null and [#"fakdat."]=null then [#"dagb."] else if [#"factuur"]=null then [#"fakdat."] else [#"factuur"]
Aanpast in
Code:
if [#"factuur"]=null and [#"fakdat."]=null then [#"dagb."] else if [#"factuur"]=null then [#"fakdat."] else [COLOR="#FF0000"]null[/COLOR]
dan heb je alleen Fill nog nodig en even filteren op factuurnummer <> null
 

Bijlagen

  • voorbeeldoverzicht1.xlsx
    24,4 KB · Weergaven: 12
Allen hartelijk dank voor het meedenken, in het bijzonder VenA. Met jouw idee is het gelukt, uiteraard nog een paar kleine probleempjes maar die ik heb ik op kunnen lossen (niet elk factuurnummer was een getal, zaten ook letters in soms...)

PQ blijft een mooi stuk gereedschap voor gegevenstransformatie. Ik leer er steeds meer over en gebruik het ook steeds vaker.
 
Laatst bewerkt:
Daarom heet het ook een factuurnummer:d

Maar inderdaad leuk speelgoed.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan