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

Naar meerdere kolommen verplaatsen

Status
Niet open voor verdere reacties.

dunja

Gebruiker
Lid geworden
10 feb 2007
Berichten
35
Zie bijgaand bestandje.
Graag wil ik de tekst verplaatsen naar meerdere kolommen. D.w.z. indien er 1 puntje voor staat, naar de 2e kolom. Indien 2 puntjes, naar 3e kolom etc.
Is dit mogelijk in excel?

Heel graag hulp, zou mooi zijn.
 

Bijlagen

  • test kolom.xlsx
    9,7 KB · Weergaven: 42
Via tekst naar kolommen lukt dit blijkbaar niet, dus een macro'tje:
Code:
Sub cobbe()
For Each cl In Range("A3:A11")
 legecellen = Right(cl, 1)
  Cells(cl.Row, 2 + legecellen * 1) = cl
Next
End Sub
 
puntjes maken het lastig, want excel maakt van 3 aaneengesloten punten 1 teken en dan wordt het lastig tellen.
(dit zou je bij autocorrectie-opties wel kunnen wijzigen, maar gaat je niet veel verder brengen nu.)

De manier van Cobbe werkt nu, maar als er geen getallen achter zouden staan niet.
 
Laatst bewerkt:
Cobbe hartelijk bedankt.
Is het dan ook mogelijk om automatisch een cijfer achter de naam van het item te zetten?
Zo niet, dan moet ik dit handmatig doen, het is n.l. wel een heel lang overzicht welke ik moet aanpassen.
 
Als je met puntjes wil blijven werken gaat dat niet lukken,
als je een ander teken gebruikt is dat perfect mogelijk ook zonder cijfer achter de tekst.
Ook in VBA telt hij 3. als 1.

Zelfs in WORD lukt dat niet met zoeken/ vervangen.
 
Laatst bewerkt:
Dank je Cobbe.
Dan ga ik kijken of ik iets kan met zoeken en vervangen van het aantal puntjes en vervolgens een teken voor de tekst zetten.
 
Is inderdaad wel lastig omdat drie puntjes een eigen Ascii code hebben. Probeer het zo eens
Code:
Sub VenA()
  For Each cl In Columns(1).SpecialCells(2)
    t = 0
    t1 = 0
    t2 = 0
    For j = 1 To Len(cl)
      Select Case Asc(Mid(cl, j, 1))
        Case 46: t = t + 1
        Case 133: t1 = t1 + 3: t2 = t2 + 1
        Case Else: Exit For
      End Select
    Next j
    cl.Offset(, t + t1) = Mid(cl, t + t2 + 1) & t + t1
  Next cl
End Sub
 

Bijlagen

  • test kolom.xlsb
    13,8 KB · Weergaven: 32
Laatst bewerkt:
VenA bedankt. Ik probeer de code te kopiëren in een nieuwe makro van het bestand. Dit lukt niet, doe ik iets fout? Sorry ik ben dan nog een echte leek met excel.
 
Hartstikke bedankt, ik ga er morgen verder mee aan het werk.
 
Met een lus minder.

Code:
Sub VenA()
  With Sheet1.Cells(2, 1).CurrentRegion
    ar = .Value
    For j = 1 To UBound(ar)
      ar(j, 1) = Application.Substitute(Application.Substitute(ar(j, 1), ".", "|"), Chr(133), "|||")
      ar(j, 1) = ar(j, 1) & UBound(Split(ar(j, 1), "|"))
    Next j
    .Value = ar
    .TextToColumns , 1, , , , , , , True, "|"
  End With
End Sub
 
Excuses, het heeft een beetje langer geduurd om het e.e.a. te testen.
Uiteindelijk is het toch opgelost door als splitsing de punt te gebruiken.

Bedankt allemaal voor het meedenken/schrijven!!
 
Kan je even laten zien hoe je het dan voor elkaar gekregen hebt? Splitsen op . is volgens mij en andere helpers niet mogelijk als er meer dan 2 .en achter elkaar zijn ingevoerd.
 
Excuses voor de late reactie.
Wat ik gedaan heb: een bestand uit een programma geëxporteerd naar een tekst-bestand. Vervolgens Excel geopend en het bestand geïmporteerd met als scheidingsteken één puntje.
De gegevens werden gesplitst in diverse kolommen. Tussen elke kolom kwamen 2 lege kolommen, maar die kan ik snel verwijderen. Het is mij dus zo gelukt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan