Cel splitsen

Status
Niet open voor verdere reacties.

vhenk

Gebruiker
Lid geworden
4 feb 2009
Berichten
33
Na alle moeilijk vragen die ik heb gesteld en waar ik een mooi antwoord op heb gekregen heb ik een probleem gegevens uit een cel te splitsen ik gebruik nu de formule, waar hij gelijk de spatie weg haalt.

=RECHTS(A2;VIND.SPEC(" ";A2)-1)

In bijgesloten bestand vind je een voorbeel van mijn probleem.
Ik moet de cellen splitsen 125,25 per kilo, en dan wil ik per kilo in een ander cel krijgen en dat hij dan gelijk geiwst wordt in de andere cel.
Het kom voor dat het is:

Per 1
Per kilo
per 1000

Ik hoop dat jullie mij kunnen helpen hiermee.
Ik ben een beginnende VBA in excel maar vind het waanzinnig leuk om het te doen, en te begrijpen wat de code inhoud.

Alvast weer bedankt voor jullie inbreng

Henk
 

Bijlagen

selecteer kolom A
Menubalk/data/van tekst naar kolommen/spatie
 
Zo simpel

Dank, het is allemaal zo simpel als je het maar weet , en waar je moet zoeken.
Ik dacht dat ik veel van EXCEL af wist maar dat vaklt erg tegen :(

Ik heb nu de cellen gesplitst in verschillen kolomen door op spatie te zoeken.
De gegevens staan nu in drie kolomen

Kolom 2 kolom 3 kolom 4
---------------------------------------------
3.25 per 1000

Nu wil ik "per" ( kolom 3 ) en "1000" (kolom 4 ) samenvoegen met een spatie er in naar kolom 24.
Ik kan dit doen met de formule samenvoegen en opnemen met een macro
(ik moet namelijk het bestand telkens verversen en de handelingen herhalen vandaar dat ik een vba script hier voor wilde gebruiken).
Is er een mogelijk heid om dit sneller te doen. Die dan gelijk kolom 3 en 4 verwijderd zodra de gegevens zijn verplaatst.

Henk:o
 
Laatst bewerkt:
In VBA

Code:
for each cl in  columns(1).specialcells(xlcelltypeconstants)
  cl.offset(,23)= mid(cl.value,instr(cl.value," ")+1)
  cl.value=left(cl.value,instr(cl.value," ")-1)
next
 
Beste,

Bedankt voor de code , enkel geef hij een foutmelding op regel

Code:
  cl.Value = Left(cl.Value, InStr(cl.Value, " ") - 1)

Helaas snap ik nog niet echt wat er gebeurd met de ze code, dus kan het zelf niet uitzoeken wat er fout is.
Ik wilde een voorbeeld bestand er bij doen maar die is 450 kb dus dat gaat helaas niet

Code:
Sub Kolom_B_Splitsen()
'
For Each cl In Columns(1).SpecialCells(xlCellTypeConstants)
  cl.Offset(, 23) = Mid(cl.Value, InStr(cl.Value, " ") + 1)
  cl.Value = Left(cl.Value, InStr(cl.Value, " ") - 1)
Next
End Sub


Al weer bedankt , weet niet wat ik zonder jullie moet.
Henk:o
 
mijn code gaat ervan uit dat de gegevens in kolom A staan (net zoals in jouw voorbeeldbestand).
Als het om kolom B gaat vervang dan columns(1) door columns(2)

als de gegevens een andere opbouw hebben dan je in je vraag hebt geformuleerd kan het eveneens fout gaan: bijvoorbeeld als er zich geen spatie in de cel bevindt.
 
Laatst bewerkt:
Beste,

ik heb het veranderd en hij pakt het nog niet. Ik had die actie ook al uitgevoerd.
In de bijlage een aantal regels uit mijn scheet, ik hoop dat je hier een passen antwoord op heb.
Nog gmaals ik waardeer al de hulp die krijg van jullie

Henk:o
 

Bijlagen

Opgelost

Best,

Ik heb het probleem gevonden.
Ik heb een header met een naam.
Ik heb deze naam verwijderd en nu doet hij het wel.
Wel raar dat hij daar over struikeld, maar hierdoor ga je dieper in de code en ga je het misschien nog snappen ook :)

Bedanktvoor de hulp

Henk:o
 
als de gegevens een andere opbouw hebben dan je in je vraag hebt geformuleerd kan het eveneens fout gaan: bijvoorbeeld als er zich geen spatie in de cel bevindt
Op te lossen met
Code:
sub splits()
  on error resume next
  for each cl in  columns(1).specialcells(xlcelltypeconstants)
    cl.offset(,23)= mid(cl.value,instr(cl.value," ")+1)
    cl.value=left(cl.value,instr(cl.value," ")-1)
  next
End Sub
of
Code:
sub splits()
  for each cl in  columns(1).specialcells(xlcelltypeconstants)
    if instr(cl.value," ")>0 then
      cl.offset(,23)= mid(cl.value,instr(cl.value," ")+1)
      cl.value=left(cl.value,instr(cl.value," ")-1)
    End If
  next
End Sub
 
Gelukt

Bedankt, ik heb het script aangepast op jou tweede manier, en het werkt goed.
Alles bij elkaar is het een moois script geworden en ben ik weer wat wijzer geworden.

Henk:o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan