VBA grote hoeveelheden variabele kolommen verwijderen

Status
Niet open voor verdere reacties.

wvoorschot

Gebruiker
Lid geworden
24 apr 2018
Berichten
6
Hoi, wie kan mij helpen?

Ik heb een tabblad met meer dan 1000 kolommen (elk 150 regels groot). Hierin wordt van alles berekent.
Voor communicatie doeleinden worden echte maar 150 kolommen getoond.
Tot nu toe neem ik een macro op waar in de kolommen selecteer die verwijdert moeten worden (nee niet verbergen, is geen optie). Het werkt prima hoor maar als er geregeld nieuwe versies worden aangeboden met nieuwe kolommen en vervallen kolommen dan is de gein eraf.

Ik zoek een methode dat ik in een regel (b.v. regel 1) in elke kolom een 1 of een 0 kan zetten. Een macro zou dan alle kolommen moeten afgaan en alle kolommen verwijderen waar in de eerste regel(kolom) een 1 staat.

Zou Top zijn als iemand mij kan helpen.
 

Bijlagen

  • layoutvoorbeeld.xlsx
    10,6 KB · Weergaven: 59
Als je de eerste cel in de kolommen die je wilt verwijderen leeg laat, kan het zo:

Code:
Sub Verwijder()
Range("A1:AA1").SpecialCells(4).EntireColumn.Delete
End Sub
 
Hoi,
Ik zei dat het wel werkte maar de macro is nu al een kwartier bezig met het verwijderen van de kolommen waarbij regel 1 leeg is. Bij een voorbeeld van 1000 kolommen waarvan er uiteindelijk 250 overblijven leek relatief gezien er veel sneller over te doen, dan het grote tabblad van 8000 kolommen waarvan er 2000 overblijven. De handmatige (opgenomen) macro is er veel sneller (nog geen 5 min.). Alleen het maken van een handmatige macro kost veel tijd. Helaas zijn er namelijk nogal eens nieuwe versies. Ik vermoed dat hij er nu zo lang over doet omdat de macro nu elke kolom afzonderlijk verwijdert. In de handmatig opgenomen macro worden tekens 18 kolommen geselecteerd en in 1 klap verwijdert.
Is er een mogelijkheid om een macro te maken die de handmatige macro kan nabootsen, dus dat hij eerst de aaneengesloten ( regel1 =leeg) selecteert en dan deze selectie van kolommen verwijdert.
 
Wat bedoel je precies met "handmatige macro", want in jou bijlage zit helemaal geen macro
 
Heb je voorbeeld bestand uitgebreid naar ruim 7800 kolommen. Code is bij mij binnen een halve minuut klaar, dus ik denk dat er iets anders aan de hand is.

7802 om precies te zijn en er blijven dan 2809 kolommen over
 
Laatst bewerkt:
Ik kan mij niet voorstellen dat de methode van JanBG in #2 vertragend werkt.
Maak gebruik van een gestructureerde opzet met een tabel met kolomkoppen. Je kan dan ongeacht wie er wijzigingen heeft aangebracht de juiste kolommen behouden en deze ook elke keer in dezelfde volgorde presenteren. Hoewel het kan, lijkt mij een blad met 8000 kolommen en gereduceerd tot 2000 kolommen, niet echt werkbaar. 8000 1en of 0en zetten?

@JanBG, bij mij een paar seconden over alle kolommen met een iets aangepaste code
Code:
Sub VenA()
  Blad1.UsedRange.Rows(1).SpecialCells(4).EntireColumn.Delete
End Sub
 
Laatst bewerkt:
@VenA, had geen stopwatch, dus die halve minuut was bij wijze van spreken...:d
 
@JanBG, die paar seconden van mij ook.:d
Wat de TS in elkaar geknutseld heeft moeten we maar even afwachten.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan