Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel

Forumthread: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel

Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
10.01.2026 23:39:36
RePeter
Guten Abend,

Vor dem Hintergrund einer Diagrammerstellung benötige ich die Anzahl der eingeblendeten (sichtbaren) Spalten in der Diagrammausgangstabelle.
Während man die sichtbare Anzahl der Zeilen in einer gefilterten Tabelle über „Teilergebnis(3;…) oder Teilergebnis(103;…) oder AGGREGAT…ermitteln kann, scheint diese Funktionalität bei manuell ausgeblendeten Spalten (!, nicht: Zeilen) nicht zu funktionieren.

Daher habe ich zunächst mit dem Workaround ZELLE(„Breite“;…) versucht, die jeweilige Breite der Zellen im Zellbereich, der geprüft werden soll, zu ermitteln. Wenn der Rückgabewert > 0, dann ist die Spalte eingeblendet. Leider: Das klappt gut, wenn in den relevanten Spalten nur „überschaubar lange“ Zahlen oder Texte stehen. Leider habe ich in den Spalten Formeln mit Verknüpfungen auf andere Tabellenblätter/Dateien. Die Formellänge ist > 255 Zeichen, und das scheint das k.o.-Kriterium für die Funktion Zelle(„Breite“ …) zu sein, Rückgabewerte sind in diesem Fall „#ÜBERLAUF“, und zwar egal, ob ausgeblendet oder nicht. Die Funktion interessiert sich also offensichtlich in meinem Fall nicht für den Umstand, dass die Spalte in der Anzeige nur „überschaubar breit“ ist (ich sag mal 15 Zeichen), sondern scheint den „theoretisch benötigten“ Platz zur Formeldarstellung ermitteln zu wollen…und scheitert an einer Grenze (vermutlich 255/256 Zeichen).

Daher: Gibt es irgendeine andere (möglichst basierte) Lösung, um zu ermitteln, wie viele Spalten in einem auszuwählenden Bereich sichtbar sind?

Da ich ahne, dass die Frage nach einer Beispieldatei kommt: Ich habe versucht, das Problem mit einer einfachen Datei nachzustellen (Formel>255 Zeichen, aber eben einfacher). Leider habe ich bei diesem „nachgebauten“ Beispiel das Problem nicht. Die Funktion ZELLE(„Breite“…) schreibt dort „brav“ die Zellbreite 11 zurück. Ich möchte nun vermeiden, die Realdatei mühsam so zu zerstückeln, dass man das Problem sichtbar machen kann (Realdatei>20 MB mit vertraulichen Daten).

Insofern also ganz schlicht die Frage: Welche anderen Möglichkeiten gibt es jenseits der „ZELLE“-Option (die hier eben nicht funktioniert)…die Anzahl „sichtbarer“ Spalten in einem definiertem Bereich zu ermitteln? Wenn auch ohne Beispieldatei, wenigstens etwas anschaulicher beschrieben: Die Daten für das Diagramm stehen in Spalten C bis Z (Diagrammreihennamen dazu in Spalte A). von C bis Z werden je nach Bedarf einzelne oder mehrere Spalten ausgeblendet. Ich benötige die Zahl der "noch sichtbaren" Spalten.

PS: Dass mein Problem wie bei einem der jüngsten Beiträge ein #Überlauf-Problem ist, ist reiner Zufall!

Danke im Voraus für das Interesse!

RePeter
Anzeige
AW: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
11.01.2026 02:09:22
Daniel
Hi
Die angebenen Excelversion (2013) ist korrekt???

Der Überlauffehler hängt normalerweise mit Spill-Funktionen zusammen, die Excel aber erst seit 2021 kennt und tritt auf, wenn diese nicht genügend leere Zellen für ihr Ergebnis finden .

Ansonsten: ist VBA eine Option,dh eine selbstgeschriebene Funktion?

Gruß Daniel
Anzeige
AW: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
11.01.2026 09:20:48
schauan
... mal ein Hinweis von MS:

Die Funktion SUBTOTAL ist für Datenspalten oder vertikale Bereiche konzipiert. Sie ist nicht für Datenzeilen oder horizontale Bereiche konzipiert. Wenn Sie beispielsweise ein Teilergebnis eines horizontalen Bereichs mit einem function_num von 101 oder höher verwenden, z. B. TEILERGEBNIS(109;B2:G2), wirkt sich das Ausblenden einer Spalte nicht auf das Teilergebnis aus.
Anzeige
AW: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
11.01.2026 09:24:43
Onur
Private Sub CommandButton1_Click()

Dim col, anz
For Each col In Selection.Columns
If Not col.Hidden Then anz = anz + 1
Next
MsgBox anz
End Sub
Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 12:38:57
RePeter
Hallo Onur,

danke für den Code!

Inzwischen habe ich auch eine Formellösung gefunden:

Bisher habe ich es ja mit =ZELLE("breite";C1) usw. versucht. Das führte zu dem genannten Überlauf-Problem. Wenn man stattdessen =INDEX(ZELLE("breite";C1);1;1) verwendet...klappt es, um die Zellbreite auszulesen (zumindest jetzt in meinem Problemfall). Mit ZÄHLENWENN(C1:Z1;">1") kann man dann die Anzahl der sichtbaren Spalten im Suchbereich bestimmen.
Einzig: man muss nach Aus- oder Einblenden F9 zum Aktualisieren verwenden. Sonst zeigt die Formel den alten Wert an.

Dank an alle für's Mitmachen

Viele Grüße

Ralf
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 15:34:21
schauan
mit VBA reicht prinzipiell übrigens
sichtbar
... Range("A1:C1").SpecialCells(xlCellTypeVisible).Count
unsichtbar
... 3 - Range("A1:C1").SpecialCells(xlCellTypeVisible).Count
Die 3 kann man sich natürlich mit Range("A1:C1").Columns.Count (oder .Cells.Count) ausrechnen lassen ;-)

Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 16:34:43
BoskoBiati
Hi Ralf,

Du hättest Dir ruhig mal die Excel-Hilfe zu ZELLE("breite") durchlesen können, dann hättest Du gewußt, wo der #ÜBERLAUF-Fehler herrührt:

"Breite"


Gibt ein Array mit 2 Elementen zurück.

Das 1. Element im Array ist die Spaltenbreite der Zelle, die auf eine ganze Zahl abgerundet wird. Jede Einheit der Spaltenbreite ist gleich der Breite eines Zeichens im Standardschriftgrad.

Das zweite Element im Array ist ein boolescher Wert. Der Wert ist TRUE, wenn die Spaltenbreite die Standardbreite ist, oder FALSE, wenn die Breite vom Benutzer explizit festgelegt wurde.


Die Zellenbreite in 365 über mehrere Spalten kontrollieren geht übrigens auch so:

=LET(xa;A1:H1;SUMME(NACHSPALTE(xa;LAMBDA(a;WENN(SPALTENWAHL(ZELLE("breite";a);1)>0,2;1;0)))))


Diese Formel muß in A1 stehen (A1:H1), kannst du natürlich nach Belieben anpassen und an beliebiger Stelle einsetzen.Auch die gewünschte Breite (hier: 0,2) kannst Du beliebig wählen.

Gruß

Edgar
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 15:58:50
RPP63
Moin André!
Ich wollte heute Morgen eine UDF nach genau diesem Muster erstellen.
Mir unverständlich: es klappt nicht bzw. ist das Ergebnis immer 0
Siehst Du (m)einen Fehler?
Function HiddenCols&(rng As Range)

HiddenCols = rng.Columns.Count - rng.Rows(1).SpecialCells(xlCellTypeVisible).Count
End Function

 ABDGJKL
4124710 0

ZelleFormel
L4=HiddenCols(A4:J4)


Gruß Ralf
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 16:34:22
Eifeljoi 5
Hallo

Wie wäre es hiermit??
Für sichtbare:
Function VisibleCols&(rng As Range)

Dim c As Range, cnt As Long
For Each c In rng.Rows(1).Columns
If Not c.EntireColumn.Hidden Then cnt = cnt + 1
Next
VisibleCols = cnt
End Function


Für unsichtbare:
Function HiddenCols&(rng As Range)

Dim c As Range, cnt As Long
For Each c In rng.Rows(1).Columns
If c.EntireColumn.Hidden Then cnt = cnt + 1
Next
HiddenCols = cnt
End Function
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 16:46:40
Onur
xlCellTypeVisible funktioniert nicht in UDFs.


Public Function HiddenCols(rng As Range) As Long

Dim col, anz
For Each col In rng.Columns
If col.Hidden Then anz = anz + 1
Next
HiddenCols = anz
End Function


Du musst aber nach jedem Ein- oder Ausblenden neu berechnen lassen, da Excel dabei keine Neuberechnung anstößt.
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 17:58:26
schauan
Hi Ralf,

Mit einer Function kann man ja bekannterweise keine Ranges bearbeiten. Wie es ausschaut, gibt es da auch Einschränkungen bei den Specialcells.

Das geht wohl nur von hinten durch die Brust ins Auge. Prinzip:

im Tabellenblattmodul:
Private Sub Worksheet_Calculate()

Call test
End Sub


in einem Normalen Modul:
Dim HiddenColss&

Function HiddenCols&()
HiddenCols = HiddenColss
End Function
Sub test()
HiddenColss = Range("A1:G1").Columns.Count - Range("A1:G1").SpecialCells(xlCellTypeVisible).Count
End Sub


im Blatt
=hiddencols()+0*JETZT()

und dann 2x !! F9

Anzeige
Funktionen haben ja...
12.01.2026 13:22:37
Case
Moin André, :-)

... die schon genannten und bekannten Einschränkungen. ;-)

Funktionen sind "Berechnungsgesteuert" - da bleibt die UI aussen vor. Man kann aber über Evaluate in einer "Hilfsfunktion" ein Ergebnis "erzwingen". ;-)

Option Explicit

' Aufruf im Tabellenblatt =fncHC(A1:Z1)
Private Function fncHC(ByVal rngRange As Range) As Long
Dim rngTMP As Range
For Each rngTMP In rngRange.Columns
fncHC = fncHC + Evaluate("fncHID(" & rngTMP.Address(True, True, xlA1, True) & ")")
Next rngTMP
End Function
Private Function fncHID(rng As Range) As Long
fncHID = IIf(rng.EntireColumn.Hidden, 1, 0)
End Function

IMHO ist das aber Spielerei - so lange es andere Lösungen gibt. ;-)

Dann muss man - für die Aktualisierung - noch ein "Application.CalculateFull" aufrufen (eventuell im Worksheet_SelectionChange mit Einschränkung). ;-)

Servus
Case
Anzeige
AW: Erledigt, mit VBA, aber auch mit Formel...Danke
11.01.2026 16:45:04
RPP63
Das hatte Onur ja bereits heute Morgen gepostet.
"Mein" Problem ist ja, dass meine extrem simple UDF nicht funktioniert.
Konkreter:
SpecialCells funktioniert nicht in einer UDF.
Hier mal nur die Anzahl der sichtbaren Zellen:
Function VisibleCols&(rng As Range)

VisibleCols = rng.Rows(1).SpecialCells(xlCellTypeVisible).Count
End Function

Ergibt nicht etwa 5, sondern alle Zellen des Bereichs:
 ADFIJKL
4146910 9

ZelleFormel
L4=VisibleCols(A4:I4)


Gruß Ralf
Anzeige
AW: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
11.01.2026 02:58:07
RePeter
Hallo Daniel,

Deine Frage ist berechtigt. Also: Der Fehler tritt bei Excel 365 auf...zuhause verwende ich aber immer noch 2013, wie angegeben, insofern ist die Angabe 2013 in dem Kontext nicht zielführend.
Also: Fehler bei Nutzung 365 (in 2013 habe ich es nicht getestet - gebraucht wird es in 365).
VBA ist theoretisch eine Option...aber...ohne jetzt lange Erklärungen abzugeben: Da es sich um ein dienstliches Thema handelt, wäre Formellösung lieber. Wenn es die nicht gibt...muss man eben doch über eine VBA-Funktion gehen.


Viele Grüße
Ralf
Anzeige
AW: Anzahl eingeblendeter (bzw. ausgeblendeter) Spalten ermittel
11.01.2026 13:54:22
Daniel
Und warum gibst du dann trotzdem 2013 als Excelversion an?

Forumthreads zu verwandten Themen

Anzeige
Anzeige