Forums Neueste Beiträge
 

Zellenanzahl in komplexen Bereichen und relative Benennung

14/09/2009 - 14:31 von Christoph Päper | Report spam
Moin

Stellen wir uns ein Arbeitsblatt mit Daten über ein Jahr in
kalendarischer Anordnung mit einer Woche pro Zeile vor (oder legen es
uns an). Hier beispielhaft ein Ausschnitt für den aktuellen Monat:

||A |B |C |D |E |F |G |H |
1||KW|Mo|Di|Mi|Do|Fr|Sa|So|
..||..|..|..|..|..|..|..|..|
37||36|31|01|02|03|04|05|06| \
38||37|07|08|09|10|11|12|13| \_ 'SepKW' = C37:H40 'KW36';'KW37';'KW38';'KW39'
39||38|14|15|16|17|18|19|20| / 'Sep' = B37:H37;B38:H40;B41:D41
40||39|21|22|23|24|25|26|27| /
41||40|28|29|30|01|02|03|04| \__ 'OktKW'
..||..|..|..|..|..|..|..|..|

(Die Zellen für die Tage enthalten in Wirklichkeit natürlich nicht
ihre Positionsnummer im Monat, sondern die für mich interessanten,
hier aber irrelevanten Daten.)

ANZAHLLEEREZELLEN(SepKW) klappt problemlos, aber ANZAHLLEEREZELLEN
(Sep) versagt mit einem #WERT!-Fehler. Der Grund ist offenbar, dass
dieser Bereich "krumm" oder "komplex" ist. Gibt es dafür eine elegante
Lösung? Ich muss Office 2003 benutzen, kann Excel 2007/2010 das
besser?

Gleiches gilt für ZÄHLENWENN() und vermutlich andere Funktionen. Gibt
es eigentlich eine Funktion, die mir unabhàngig von deren Inhalt die
Anzahl der Zellen in einem (benannten) Bereich zurückgibt? (Ich hàtte
ja ZÄHLEN() oder ANZAHLZELLEN() oder eine Option für ANZAHL() oder
ANZAHL2() erwartet.)

Wenn ich schon mal dabei bin, Fragen zu stellen: Gibt es einen
einfachen Weg, den einzelnen Tageszellen automatisch Namen der Form /
MMMDD/ (also bspw. 'Sep14') zu geben? Im Moment überlege ich mit
[Einfügen > Namen > Definieren... > Bezieht sich auf] eine Formel der
Art

=WENN(SPALTE(Vortag)=SPALTE(So);ADRESSE(1;-6;4;0);ADRESSE(0;1;4;0))

für alle 364 bzw 371 Zellen außer der ersten zu verwenden. (Den
relativen Namen 'Vortag' habe ich allerdings noch nicht angelegt.)
Dann müsste ich das wenigstens nur einmal und nicht für alle 14
möglichen Kalender anlegen.

Nàchstes Mal frage ich dann, warum Excel zwar Zahlenformate für Brüche
und Zeitpunkte mitbringt, aber keins für eine Zeitdauer.

PS: Kalenderwochen richten sich bei mir nach ISO 8601, also enden sie
am Sonntag und gehören zu dem Jahr oder Monat, in dem der Donnerstag
liegt.
 

Lesen sie die antworten

#1 Andreas Killer
14/09/2009 - 17:23 | Warnen spam
Christoph Pàper schrieb:

38||37|07|08|09|10|11|12|13| \_ 'SepKW' = C37:H40 ...
39||38|14|15|16|17|18|19|20| / 'Sep' = B37:H37;B38:H40;B41:D41


...
ANZAHLLEEREZELLEN(SepKW) klappt problemlos, aber ANZAHLLEEREZELLEN
(Sep) versagt mit einem #WERT!-Fehler. Der Grund ist offenbar, dass


Sep mehrere getrennte Bereiche enthàlt und das kann ANZAHLLEEREZELLEN
von Haus aus nicht.

Entweder Du trennst die Bereiche von Hand in mehrere auf oder
schreibst Dir eine eigene Funktion die das auswerten kann, nach
angehàngtem Muster.

Andreas.

Function EmptyCells(ParamArray Bereiche()) As Long
Dim R, I As Integer
For I = LBound(Bereiche) To UBound(Bereiche)
For Each R In Bereiche(I)
If IsEmpty(R) Then EmptyCells = EmptyCells + 1
Next
Next
End Function

Ähnliche fragen