Verplaatsen van gegevens

Status
Niet open voor verdere reacties.

vhenk

Gebruiker
Lid geworden
4 feb 2009
Berichten
33
Ik wil cellen splitsen aan de hand van wat er in de cel die er voorstaat staat .
Nu staat er in kolom B "vast gegeven" en in kolom C "123456 Henk"
Nu wil ik graag kolom C splitsen enkel als kolom B voldoet en dat 123456 in kolom A geplaats wordt en Henk blijf staan in kolom C

Ik ben al bezig geweest om een script dat ik heb aan te passen dit is wat ik to zover heb,
ik blijf hangen op het kijken of hij voldoet.

Code:
Sub splits()
  For Each cl In Columns(3).SpecialCells(xlCellTypeConstants)
    If InStr(cl.Value, " ") > 0 Then
      cl.Offset(, -2) = Mid(cl.Value, InStr(cl.Value, " "))
    End If
  Next
End Sub

Groet Henk:eek:
 
Hoi,

Vraag: is dit een eenmalige actie, die je op een bestaande tabel wilt toepassen?
Zo ja, dan kan je het met een aantal functies eenvoudig zelf oplossen zonder dat je daarvoor moet gaan 'programmeren'.
 
Laatst bewerkt:
Regelmatige terug keer

Hoi bedankt voor je reactie.
Het komt vaker voor.
De code die ik had is zeker niet goed, ben er ook al verder mee geggaan maar zoals ik schreef wil enkel dat de cijfers in kolom A moten komen te staan als kolom b voldoet aan de op gegeven waarde. In mijn script pakt hij juist Henk en dat is niet goed .
Ik hoop dat je me kan helpen met mijn VBA script.

Het alleen de cijfers heb ik opgelost met Left, maar nu kom ik tegen het volgende probleem dat ik ook wel eens 0012346 heb gebruikt en dan gooit hij de nullen we en die wil ik wel bewaren

groet Henk:eek:
 
Laatst bewerkt:
Een stap verder

Code:
Sub splits()
  For Each cl In Columns(3).SpecialCells(xlCellTypeConstants)
    If InStr(cl.Value, " ") > 0 Then
      cl.Offset(, -2) = Left(cl.Value, InStr(cl.Value, " "))
    End If
    Selection.NumberFormat = "@"
  Next
End Sub

Ik pak de linker zijde van de cel met splitsen en nu maakt hij er een tekst van , dus behoud hij de nullen.
Ik blijf nu hangen op dat hij moet voldoen aan een bepaalde waarde .

Henk
 
vhenk,

Je kan natuurlijk ook de eigenschappen van de cel aanpassen.
Zet die op 8 nullen, nu zet hij wel 0012346 neer.
 
Laatst bewerkt:
Bedankt, soms is het zo simpel dat ( ik dan te moeilijk aan het denken ben)

Code:
Sub splits()
For Each cl In Columns(3).SpecialCells(xlCellTypeConstants)
vSplits = " "
If InStr(cl.Value, " ") > 0 Then
cl.Offset(0, -2) = Left(cl.Value, InStr(cl.Value, vSplits) - Len(vSplits))
cl.Offset(0, 0) = Right(cl.Value, Len(cl.Value) - InStr(cl.Value, vSplits))
End If
Selection.NumberFormat = "@"
Next
End Sub

Ondertussen is de script aangepast en erbij verwijderd hij ook gelijk de laatste gedeel die hij heeft gesplit.
Blijf in de cel over die gesplit is het geen wat er moet staan en in kolom A geef hij de nummers TOP.

Kom al een suk dichter bij mijn doel.
ik wil hier namelijk het volgende mee berijken:

Ik heb een uniek nummer in kolom C staan gezamelijk met een naam.
Die worden dus nu gesplitst uit een lijst met als trickerwaarde kolom B.


Nu wil ik het unieke nummer laten doortrekken tot het volgende vast gegeven.

Zodat ik in mijn voorbeeld ongeveer het volgende krijg zoals bold gemaakt in mijn voorbeeld

Ik hoop dat jullie een oplossing kunnen aanrijken. Maar ik ben hier al heel blij mee
 

Bijlagen

  • Voorbeeld.xls
    30,5 KB · Weergaven: 34
vhenk,

Als hij het splits dan schrijft hij het getal weg als tekst.(rode driehoekje links)
Als je van de @ een nul maakt, schrijft hij het als getal weg.
Code:
Selection.NumberFormat = "0"
Verder moet ik puzzelen.
 
Ok bedankt dat stukje script pas ik gelijk aan, is nu goed dat hij als getal wordt gemaakt,
Ik ben erg benieuwd of het mogelijk is wat ik vraag . Ik blijf mee puzzelen

Henk

Net geprobeerd en werkt niet. De nullen gaan weg.
Optie is in het VBA weg tescrijven dat die kolom de celopmaak 000000 wordt

Henk

Verder aan de gang geweest en ik heb er nu 8 nullen voor in de plaatst gezet en nu gaat het goed.
Enkel ik weet nog niet wat hij doet als ik een getal heb met maat 6 of 7 cijvers.

We blijven puzzelen.

Henk
 
Laatst bewerkt:
vhenk,

Voorlopig krijg ik het nog niet voor elkaar.
Ik denk dat we hier een echte expert voor nodig hebben.
 
Moeilijke vraag

Ik ben er inderdaad ook achter dat het een moeilijke vraag is.
Ik ben ook al verder gegaan en heb het volgende :
Code:
Sub Split_Verplaats()
For Each cl In Columns(4).SpecialCells(xlCellTypeConstants)
vSplits = " "
If InStr(cl.Value, " ") > 0 Then
cl.Offset(0, -1) = Left(cl.Value, InStr(cl.Value, vSplits) - Len(vSplits))
cl.Offset(0, 0) = Right(cl.Value, Len(cl.Value) - InStr(cl.Value, vSplits))
End If
Range("A4:A15").Value = Application.WorksheetFunction.VLookup("00123456", Range("c4:C100"), 1, False)
Selection.NumberFormat = "00000000"
Next
End Sub
Deze kijkt of er een waarde in een cel gelijk is aan.
Enkel dit is een vaste waarde, maar die moet eigenlijk variable zijn :)

Hierbij verwijderd hij ook gelijk de laatste gedeel die hij heeft gesplit.
Blijf in de cel over die gesplit is het geen wat er moet staan en in kolom A geef hij de nummers TOP.

Kom al een suk dichter bij mijn doel.
ik wil hier namelijk het volgende mee bereiken:

Ik heb een uniek nummer in kolom C staan gezamelijk met een naam.
Die worden dus nu gesplitst uit een lijst met als trickerwaarde kolom B.


Nu wil ik het unieke nummer laten doortrekken tot het volgende vast gegeven.

Zodat ik in mijn voorbeeld ongeveer het volgende krijg zoals bold gemaakt in mijn voorbeeld

Ik hoop dat jullie een oplossing kunnen aanrijken.
henk:eek:
 

Bijlagen

  • Voorbeeld.xls
    21,5 KB · Weergaven: 23
Laatst bewerkt:
volgens mij is dit wat je zoekt:
Code:
Sub Split Verplaats()

Columns(1).NumberFormat = "00000000"
For Each cl In Columns(2).SpecialCells(xlCellTypeConstants)
vSplits = " "
vWaarde = cl.Offset(0, 1)
If InStr(vWaarde, " ") > 0 Then
cl.Offset(0, -1) = Left(vWaarde, InStr(vWaarde, vSplits) - Len(vSplits))
cl.Offset(0, 1) = Right(vWaarde, Len(vWaarde) - InStr(vWaarde, vSplits))
ElseIf vWaarde = "" Then
cl.Offset(0, -1) = cl.Offset(-1, -1)
End If
Next

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan