2016-10-21 2 views
0

Also habe ich eine Spalte mit Namen aus B5:B28 gefüllt. Nachschlagen von dynamischen benannten Bereiche, verwendete ich die folgende Formel, um die Liste der Namen in der Säule zu erhalten:Der angegebene Bereich gibt nicht die korrekte Zellenanzahl zurück.

=OFFSET(Overview!$B$5, 0, 0, COUNTA(Overview!$B$5:$B28),1) 

Beachten Sie, dass die nur in Spalte B bevölkerten Reihen sind B2 bis B28, mit B5 ist der Ausgangspunkt die Liste der Namen. Die $B28 in der obigen Formel ändert sich ständig, auch wenn es absolut nichts in den Zeilen unter B28 gibt. Und genau hier liegt das Problem.

Alle Zeilen von B5:B28 sind mit Literalzeichenfolgen (keine Formeln) gefüllt und haben keine leere Zelle. Wenn ich den Wert Range("Names").Rows.Count bekomme, gibt es nur 21, 3 Zeilen kurz. Ich verstehe, dass der Bereich flüssig sein soll, aber ich verstehe nicht, warum die COUNTA eine geringere Menge erhält.

Überprüfen =COUNTA(Overview!$B$5:$B28), gibt es den richtigen Wert von 24 aus. Kann mir jemand erklären, was passiert?

+0

Was meinst du mit "The $ B28 in der obigen Formel ändert sich ständig"? –

+0

Wenn Sie den Bereich "Namen" als "$ B $ 5: $ B28" definiert haben, waren Sie in einer Zelle in Zeile 4? Wenn dies der Fall ist, wird der Bereich, wenn er in VBA (implizit von Zelle A1) bezeichnet wird, nur von "$ B $ 5: $ B25" und somit nur 21 Zeilen in der Größe sein. Ich kann nicht verstehen, warum eine Formel in Excel (die von einer Nicht-A1-Zelle stammt) denkt, dass die Größe etwas anderes als 24 Zeilen ist, wenn die Formel in dieser Zelle sich auf $ B $ 5: $ B28 bezieht. (Offensichtlich, wenn es sich auf 'Namen' und nicht auf '$ B $ 5: $ B28' bezieht, wird es je nach der Zeile der Formel reduziert oder erweitert.) – YowE3K

+0

@ YowE3K Ich habe eine Antwort gepostet, die auf Ihren Kommentar verweist plus eine bessere Form der Formel. Wenn du lieber selbst antworten möchtest, ping mich an und ich werde es entfernen –

Antwort

2

YowE3K Kommentar sagt Ihnen das, warum, reproduziert hier auf Vollständigkeit

Wenn Sie den Bereich „Namen“ definiert $ B $ 5 sein: in einer Zelle auf 4 Reihe $ B28 waren Sie? Wenn dies der Fall ist, wird der Bereich, auf den in VBA Bezug genommen wird (implizit von Zelle A1), nur von $ B $ 5: $ B25 und somit nur 21 Zeilen groß sein. Ich kann nicht verstehen, warum eine Formel in Excel (die aus einer Nicht-A1-Zelle stammt) denkt, dass die Größe etwas anderes als 24 Zeilen ist, wenn sich die Formel in dieser Zelle auf $ B $ 5: $ B28 bezieht. (Selbstverständlich, wenn es um Namen bezeichnet, anstatt $ B $. 5: $ B28, wäre es verkürzt oder verlängert werden, je nachdem, welche Zeile die Formel platziert wurde)

Eine bessere Möglichkeit, die Formel zu bilden ist (unter der Annahme, B2, B3, B4 sind immer besiedelte)

=OFFSET(Overview!$B$1, 4, 0, COUNTA(Overview!$B:$B)-3,1) 
+0

Die Daten existieren auf Zelle 'B5' und können bis zu wie viele Einträge der Benutzer –

+0

einfügen. Deshalb habe ich B: B verwendet. Hast Du es versucht? –

+0

Die revidierte Formel könnte immer noch von $ B $ 5 abweichen, und die '-3' könnte durch eine Anzahl von Zellen in B1 ersetzt werden: B4, dh' = OFFSET (Übersicht! $ B $ 5, 0, 0, COUNTA (Übersicht! $ B: $ B) -COUNTA (Überblick! $ B $ 1: $ B $ 4), 1) '. (Ob es ein Offset von B1 oder B5 ist, ist nicht wirklich sehr wichtig, obwohl es mit B5 wahrscheinlich etwas transparenter ist, aber die Verwendung eines anderen COUNTA, um Header loszuwerden, macht den Code wahrscheinlich ein wenig narrensicherer.) – YowE3K

Verwandte Themen