Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel 2003] Cellen verplaatsen met macro

Pagina: 1
Acties:

  • ShaneV
  • Registratie: Maart 2005
  • Laatst online: 07:56
Hey allemaal,

Vanuit de directie is mij gevraagd om met een oplossing te komen voor het volgende probleem:

We hebben een excel werkblad, waarop teveel kolommen staan. Je zou kunnen zeggen, gewoon die kolommen verwijderen? Juist maar, er staan bepaalde gegevens in die kolommen die niet weg mogen. Maar, naast die gegevens is er lege ruimte in een andere kolom, dus wilt men die gegevens verplaatsen bv ==>

In Cel A1 staat: CAO, dit moet naar Cel B1. Dit kan idd allemaal met de hand maar, dit werkblad is zodanig groot en chaotisch, dat men snel iets over het hoofd zal zien. Ik ben dus opzoek naar een macro die voor mij opzoek gaat naar bepaalde woorden in het werkblad en deze 1 cel gaat opschuiven.

Probleem: ik heb nog nooit met macro's gewerkt. Zelfs op school heb ik dit niet gezien. Programmeren is sowieso al niet mijn sterkste vak, dus zit ik redelijk klem.

Wie kan mij de juiste weg uitsturen?

Alvast bedankt!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 19:50
Een macro kan absoluut niet omgaan met "chaos". Dat betekent denk ik dat je er goed aan doet om niet te beginnen met de vraag hoe je een macro schrijft, maar met het structureren van wat je wilt bereiken.
Zodra je dat goed hebt geformuleerd, dan kan je pas beginnen aan de macro zelf (of misschien is er, bezien die beschrijving wel een betere oplossing.)
Een gestructureerde beschrijving zou iets zijn als:
Stap 1:
Loop van boven naar beneden alle cellen in kolom A door.
Als er in een cel CAO staat en er in de cel rechts ervan niets staat, verplaats de inhoud dan naar de cel rechts ervan. Staat er wel iets, geef dan een foutmelding /doe niets/doe ....
Als er in de cel iets anders dan CAO staat, doe dan....

Stap 2:
Verwijder kolom A

Stap 3:
Loop kolom D door.
Als er een cel paarskleurig is, doe dan....

etc. etc.

Let erop dat je in dat verhaal nooit "bijv." gebruikt. Macro's snappen dat niet. Let er ook op dat je nadenkt over alle mogelijke scenario's (Maar wat als er al wél wat staat in kolom B?)
Zodra je die lijst (grotendeels) afhebt, weet je wat het probleem eigenlijk is en zie je ook eenvoudiger wat de beste oplossing is/ kan je een beter beantwoordbaar hulpverzoek hier posten. :P

[ Voor 4% gewijzigd door onkl op 19-03-2009 10:54 ]


Verwijderd

onderstaande macro verplaatst alle gegevens van de te verwijderen kolom naar de kolom rechts ernaast, indien daar op dezelfde rij een lege cel staat, zonder echter onderscheid te maken naar gelang de waardes. vervolgens wordt de oorspronkelijke kolom verwijderd.
alvorens de macro uitgevoerd wordt, moet je een cel selecteren in de kolom waar de gegevens naartoe moeten (kolom B uit het voorbeeld).
Visual Basic:
1
2
3
4
5
6
7
Sub KolomAanvullenenVerwijderen()
  With Selection.EntireColumn.SpecialCells(xlCellTypeBlanks)
    .FormulaR1C1 = "=RC[-1]"
    .Value = .Value
  End With
  Selection.Offset(, -1).EntireColumn.Delete
End Sub

ik stel echter voor dat je bovenstaand niet gebruikt, maar probeert deze zelf te maken en verder aan te passen. je doet het volgende :
pas een autofilter toe op het ganse bereik, voor de kolommen waar waardes naartoe moeten doe je per kolom het volgende :
- autofilter->enkel lege cellen tonen.
- formule doorvoeren =als(of(a1="CAO";a1="CBB";...);a1;"") waarbij "a1" eigenlijk het adres is van de cel links naast de cel waar deze formule ingevoerd wordt.
- kopieren->plakken speciaal->waardes
alle bovenstaande acties neem je (relatief) op in je macro en daarna voer je noodzakelijke aanpassingen door.
als er enkel specifieke woorden verplaatst moeten worden, zal bovenstaand niet werken. dan moet je met een lus tewerk gaan.