Excel: Maken van variabele etiketten

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Gijs23
  • Registratie: Augustus 2014
  • Laatst online: 09-03-2022
Mijn vraag:
Ik zit een Excel tabblad te maken voor het maken en uitprinten van variabele etiketten.
Dit is nu grotendeels gelukt maar ben nog op zoek naar manieren om twee dingen te doen:

1) Ik wil een functie die ervoor zorgt dat er in A8 een bepaalde tekst komt te staan als 2 of meer van de cellen in B8:O8 leeg zijn. Als er maar 1 cel in die range tekst bevat wil ik A8 leeg hebben. Wat is de makkelijkste manier om dit te doen?

2) In de kolommen B t/m O zullen 10 tot 13 kolommen zijn die leeg zijn.
Ik weet niet van tevoren welke kolommen leeg zijn, of hoeveel.
Ik zoek een manier waarop ik de kolommen waar wel tekst in staat naast elkaar kan krijgen(door de lege kolommen te verwijderen/verbergen ofzo). iemand enig idee of/hoe ik dit kan doen?
...

Relevante software en hardware die ik gebruik
Excel 2010
...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Roozzz
  • Registratie: Juni 2011
  • Laatst online: 22:31

Roozzz

Plus ultra

1. Gebruik maken van een IF (of ALS) formule in A8, dit in combi met een COUNT voor de range. Gezien je criteria moet je waarschijnlijk 2 IF-formules gebruiken. Bedenk dan meteen ook even wat je wilt als er bijvoorbeeld maar 1 cel tekst leeg is.

2. Selecteer kolom, rechtermuisknop -> hide/verberg. Of wil je dit gaan automatiseren? Dan zou je naar VBA moeten kijken. Zou ik niet aan beginnen als bovenstaande nog geen gesneden koek is... :X

If you can see, look. If you can look, observe


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 20:56

SinergyX

____(>^^(>0o)>____

AANTALARG (volgens mij engels COUNT) in een als functie, goed te doen.

2 zal niet met formules gaan, fysiek verbergen van kolommen heb je VBA nodig en als je daar weinig mee doet, niet aan beginnen.
(je kan exotisch wel een aparte cel gebruiken om B t/m O samen te voegen)

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

1. Inderdaad aantalarg(), dan tel je het aantal lege cellen. B:O is 14 cellen? Dan is 14 - aantalarg() het aantal gevulde cellen en je bent er. (Let op: count / aantal telt alleen getallen, dat werkt dus niet).

2. Niet, althans niet zonder VBA en dat klinkt inderdaad als nog een brug te ver voor je. Eventueel alles op z'n kant zetten (kolommen -> rijen) en dan lege rijen filteren.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 21:16
VBA klinkt inderdaad als een brug te ver.. Maar om even te laten zien dat het wel vrij eenvoudig kan...
@ TS Onderstaande code niet zomaar gebruiken.. vba heeft geen undo-knop!

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit

Sub WegMetDieLegeKolom()

  'declaraties
  Dim c As Range        'elke cel uit  opgegeven zoekbereik
  Dim rngKolom As Range 'een variabele hele kolom
  
  'met het actieve werkblad
  With ActiveSheet
    'loop door de cellen B1 t/m O1
    For Each c In .Range("B1:O1")
      'Stel de variabele kolom in, gebaseerd op de cel waar de lus zich nu bevindt
      Set rngKolom = .Range(.Cells(1, c.Column), .Cells(1, c.Column).End(xlDown))
      'als de kolom helemaal leeg is
      If WorksheetFunction.CountA(rngKolom) = 0 Then
        'verwijder dan de hele kolom
        c.EntireColumn.Delete
      End If
    'en ga door naar de volgende cel uit B1 t/m )1
    Next c
  'even netjes de With afsluiten
  End With
  
End Sub

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

breew schreef op vrijdag 9 februari 2018 @ 17:32:
VBA klinkt inderdaad als een brug te ver.. Maar om even te laten zien dat het wel vrij eenvoudig kan...
@ TS Onderstaande code niet zomaar gebruiken.. vba heeft geen undo-knop!
offtopic:
De code laat mooi zien wat er fout kan gaan bij VBA: door de for-loop wordt na verwijderen steeds een kolom overgeslagen bij controleren. Het gaat fout als er twee lege kolommen naast elkaar zouden staan (check kolom C, verwijder kolom C, check kolom D. Nu wordt de inhoud van de originele D overgeslagen). Maar goed, dat kan natuurlijk eenvoudig worden aangepast in de code.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • +1 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 21:16
F_J_K schreef op vrijdag 9 februari 2018 @ 17:38:
[...]

offtopic:
De code laat mooi zien wat er fout kan gaan bij VBA: door de for-loop wordt na verwijderen steeds een kolom overgeslagen bij controleren. Het gaat fout als er twee lege kolommen naast elkaar zouden staan (check kolom C, verwijder kolom C, check kolom D. Nu wordt de inhoud van de originele D overgeslagen). Maar goed, dat kan natuurlijk eenvoudig worden aangepast in de code.
Oeps.. dat krijg je als je je code niet goed naloopt/test |:(
@F_J_K Afbeeldingslocatie: https://i.stack.imgur.com/i5UMn.jpg

[ Voor 5% gewijzigd door breew op 21-02-2018 11:34 ]

Pagina: 1