Das Beste kommt zum Schluß: Die letzte Zeile einer Excel-Tabelle 34

Mit der simplen Kombination von ein paar Excel-Funktionen lässt sich der letzte Eintrag einer Tabelle finden - ganz ohne VBA.
 

Manchmal möchte man den jeweils letzten Eintrag seiner Excel-Tabelle zusätzlich noch an einer anderen Stelle ausgeben. Zum Beispiel ganz am Anfang einer sehr langen Tabelle, um den Eintrag jederzeit im Blick zu haben. Oder um ihn vielleicht in einem Formular ausgeben zu können.

Da die Tabelle aber ständig länger wird, sich das Ende also dynamisch nach unten verschiebt, kann man nicht einfach eine Verknüpfung zu einer festen Zeile erstellen, denn man kennt ja das Ende der Tabelle noch nicht.

Mit der geschickten Kombination einiger Excel-Standardfunktionen gibt es auch für dieses Problem ein Happy End. Und zwar ganz ohne VBA-Programmierung bemühen zu müssen.

Und so geht’s:

Durchgängige Tabelle

Am leichtesten ist es, wenn man eine fortlaufende Tabelle hat, in der in jeder Zeile ein Eintrag steht, so wie in meinem kleinen Beispiel. Hier habe ich eine Adressenliste und ich möchte den jeweils letzten Eintrag oben rechts in dem hervorgehobenen Bereich ausgeben lassen:

Beispiel: Adressenliste

Beispiel: Adressenliste

Wie gelingt uns das nun?

Dazu muss ich eigentlich nur wissen, in welcher Zeile der letzte Eintrag steht, sprich: wieviele Zeilen meine Tabelle hat. Da meine Adressenliste keine Zahlen, sondern alphanumerische Werte enthält, verwende ich dazu die Excel-Funktion ANZAHL2. Und das Ergebnis davon benutze ich in der INDEX-Funktion, um den Inhalt auszugeben:

ANZAHL2 und INDEX in Kombination

ANZAHL2 und INDEX in Kombination

Zur Erläuterung:
Die ANZAHL2-Funktion gibt die Anzahl der nichtleeren Zellen in dem angegebenen Bereich wieder. Da ich ja nicht weiß, wie lange meine Tabelle irgendwann sein wird, habe ich in meinem Beispiel die komplette Spalte A angegeben („A:A)“ und erhalte damit den Wert 17 zurück (die Überschrift wird mitgezählt).

Und an die INDEX-Funktion übergibt man in der einfachsten Version zwei Parameter. Nämlich einen Tabellenbereich und eine Zeilennummer. Zurückgeliefert wird dann der Inhalt der betreffenden Zelle.

Auch hier gebe ich die komplette Spalte A an („A:A“), der zweite Parameter wird durch die ANZAHL2-Funktion geliefert (= 17). Damit gibt die INDEX-Funktion den Inhalt der 17. Zeile in Spalte A aus.

Tipp:
Sollte meine Tabelle nicht wie hier in der ersten Zeile beginnen, sondern z.B. erst in der vierten, dann muss ich einfach noch die Anzahl der Leerzeilen addieren. Und meine Funktion würde dann eben so aussehen:
=INDEX(A:A;ANZAHL2(A:A)+3)

Zusätzliche Leerzeilen am Anfang

Zusätzliche Leerzeilen am Anfang

Was aber, wenn es innerhalb meiner Tabelle leere Zeilen gibt?

Tabelle mit Leerzeilen

Sollten sich innerhalb meiner Tabelle Leerzeilen befinden, funktioniert die oben vorgestellte Lösung leider nicht. Die ANZAHL2-Funktion ermittelt wieder die Zahl 17, denn es gibt ja einschließlich der Überschrift 17 gefüllte Zeilen. Diese Zahl entspricht aber nicht mehr unserer letzten Zeilennummer, denn durch die Leerzeilen ist meine letzte Zeile in der Tabelle nach unten gerutscht:

Problem: Leere Zeilen

Problem: Leere Zeilen

Aber natürlich gibt es auch hierfür eine Lösung!

Da die ANZAHL2-Funktion nicht zum gewünschten Ergebnis führt, verwende ich stattdessen die VERGLEICH-Funktion, um nach der letzten Zeile in meiner Tabelle zu suchen.

Zur Erinnerung:
Die VERGLEICH-Funktion sucht in einem Zellbereich (Parameter 2) nach dem angegebenen Suchkriterium (Parameter 1) und gibt dessen Position zurück. Dabei kann man über einen optionalen dritten Parameter noch die Art und Weise bestimmten, wie gesucht werden soll:
=VERGLEICH(Suchkriterium; Bereich; Vergleichstyp)

Der Vergleichstyp kann entweder 1, 0 oder -1 sein. Wenn er weggelassen wird, unterstellt Excel den Wert 1. Die Excel-Hilfe sagt dazu folgendes:

Excel-Hilfe zum Vergleichstyp

Excel-Hilfe zum Vergleichstyp

Und genau diese dritte Option -1 machen wir uns hier auf eine zugegebenermaßen etwas ungewöhnliche Weise zunutze:
=VERGLEICH("";A:A;-1)

Als Suchkriterium werden zwei doppelte Anführungszeichen übergeben, was bedeutet, ich suche in Spalte A (= Paramter 2) nach einer leeren Zelle. Und jetzt kommt der Trick mit dem Vergleichstyp -1 (= Parameter 3). Excel geht laut Hilfefunktion bei der Suche davon aus, dass es sich um eine absteigend sortierte Liste handelt.

Das ist für uns völlig irrelevant, führt aber dazu, dass die Suche nicht beim ersten gefundenen Treffer aufhört, sondern bis zum Ende der Tabelle weitergeht. Denn Excel nimmt ja an, dass die Liste absteigend sortiert ist und immer „kleinere“ Werte kommen, je weiter man in der Tabelle nach unten geht. Und da laut Hilfefunktion der kleinste Wert gesucht wird, der mit dem Suchkriterium („“) übereinstimmt oder größer ist, trifft dies immer auf den letzten Wert in der Tabelle zu:

Liefert auch bei leeren Zeilen das gewünschte Ergebnis

Liefert auch bei leeren Zeilen das gewünschte Ergebnis

Die so ermittelte Position wird wieder an die INDEX-Funktion übergeben und liefert damit den gewünschten Zelleninhalt, wie man im Bild oben sieht.

Sonderfall Zahlen

Ein paar Leser sind schon darüber gestolpert, dass die gezeigte Lösung zwar für Texte funktioniert, nicht jedoch für den Fall, wenn die Suchspalte Zahlen enthält. Dafür ist noch eine Anpassung der Formel notwendig. Anstelle des leeren Textes könnte man beispielsweise nach der Ziffer 0 suchen. Die Formel heißt dann:
=INDEX(A:A;VERGLEICH(0;A:A;-1))

Und für den Fall, dass die Null ebenfalls in der Liste vorkommt, muss ein Wert gewählt werden, der kleiner als die kleinste vorkommende Ziffer ist. Das kann dann auch eine negative Zahl sein:
=INDEX(A:A;VERGLEICH(-999;A:A;-1))

Ich gebe zu, dass diese Lösung wahrscheinlich nicht auf auf Anhieb für jedermann nachvollziehbar ist. Manchmal muss man in Excel etwas um die Ecke denken und kommt dafür auf Lösungen, die vielleicht auch von den Excel-Schöpfern nicht unbedingt vorgesehen waren.

Wenn dir der Artikel gefallen hat: Bitte weitersagen!
Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.



Avatar-Foto

Über Martin Weiß

Er ist das Gesicht hinter dem Blog "Der Tabellenexperte". Seit 2013 veröffentlicht er hier Beiträge zu seinem Lieblingsprogramm: Microsoft Excel. Martin Weiß ist zertifizierter Microsoft Excel Expert und verdient sein Geld als selbständiger Excel-Berater, -Entwickler und -Trainer.

Schreibe einen Kommentar zu Sven Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

34 Gedanken zu “Das Beste kommt zum Schluß: Die letzte Zeile einer Excel-Tabelle

  • Avatar-Foto
    Carola Lück

    Das mit den Leerzeilen und Vergleich funktioniert leider nicht, wenn in Spalte A Zahlen stehen z.B. Kundennummern. Dann findet er nur die Überschrift.
    zwei Anführungszeichen sind ja ein leerer Text und keine leere Zelle. Einfache Probe mit istleer(zelle).

    • Avatar-Foto
      Martin Weiß

      Hallo Carola,

      danke für den Hinweis. Du hast Recht, wenn die Suchspalte Zahlen enthält, dann funktioniert die VERGLEICH-Funktion so nicht. Ein Lösung dafür könnte so aussehen:
      Anstelle des leeren Textes suchen wir nun nach der Ziffer 0. Die Formel heißt somit:
      =INDEX(A:A;VERGLEICH(0;A:A;-1))

      Für den Fall, dass die Null ebenfalls in der Liste vorkommt, muss ein Wert gewählt werden, der kleiner als die kleinste vorkommende Ziffer ist. Das kann dann auch eine negative Zahl sein:
      =INDEX(A:A;VERGLEICH(-999;A:A;-1))

      Schöne Grüße,
      Martin

      • Avatar-Foto
        Weis

        Super Artikel. Hab lange nach einer derartigen Lösung gesucht.
        Leider ist bei mir der Fall, dass sowohl Zahlen, als auch Buchstaben in einer Zeile Stehen können.
        Gibt es dafür auch eine Lösung? Am besten auch ohne Makro…?

        • Avatar-Foto
          Martin Weiß

          Hallo Weis,

          ja, auch dafür gibt es eine Lösung. Man muss nur zwei VERGLEICH-Funktionen einsetzen. Einmal für Zahlen und einmal für Buchstaben und den jeweils höchsten gefundenen Wert übergibt man dann an die INDEX-Funktion:
          =INDEX(A:A;MAX(VERGLEICH(-999;A:A;-1);VERGLEICH(„“;A:A;-1)))

          Grüße,
          Martin

          • Avatar-Foto
            Alex

            Gibt es auch irgendwie die Möglichkeit, den letzten Datensatz aus einer Zelle auszulesen?
            Beispielsweise: In der Zelle A2 steht: Dr. med. Dieter Willhelm

            da ich mich für den Nachnamen in diesem Fall Willhelm interessiere, frage ich mich, ob ich das über irgendeine Funktion auch auslesen kann. Also einfach den letzten Datensatz?

          • Avatar-Foto
            Martin Weiß

            Hallo Alex,

            mit Datensatz meinst Du hier einfach das letzte Wort, richtig? Da gibt’s verschiedene Ansätze. Entweder die Zelle in ihre Bestandteile zerlegen über das Menü „Daten – Text in Spalten“ und dabei das Leerzeichen als Spaltentrenner angeben.

            Oder mit einer etwas komplizierteren Formellösung. Annahme: Der Text „Dr. med. Dieter Willhelm“ steht in Zelle A1:
            =RECHTS(A1;LÄNGE(A1)-FINDEN(„~“;WECHSELN(A1;“ „;“~“;LÄNGE(A1)-LÄNGE(WECHSELN(A1;“ „;)))))

            Was mich gerade auf die Idee bringt, darüber mal einen kleinen Artikel zu schreiben…

            Schöne Grüße,
            Martin

          • Avatar-Foto
            Jake

            Wenn man jetzt noch die -999 durch (KKLEINSTE(A:A;-1)-1) ersetzt, hat man auch immer garantiert den kleinsten Wert. Nicht dass aus Versehen in der Tabelle mal eine Zahl auftaucht, die kleiner als die gesetzte Zahl ist.

          • Avatar-Foto
            Martin Weiß

            Hallo Jake,

            sehr gute Idee, vielen Dank dafür!

            Schöne Grüße,
            Martin

      • Avatar-Foto
        Thomas Janata

        Hallo Martin,

        mittels Artikels „Jetzt kommt Bewegung rein: Dynamische Bereichsnamen“ bin ich eigentlich auf dasselbe wie Carola angestoßen. Glücklicherweise gibt es hier tolle Lösung dafür. Allerdings mein Vorschläg wäre, direkt im erwähnten Artikel darauf hinzuweisen, dass man für die Zahlen die Formel anpassen muss… Wäre es aus deiner Sicht sinnvoll?

        Danke,
        Grüße Thomas

        • Avatar-Foto
          Martin Weiß

          Hallo Thomas,

          ja, das ist eine gute Idee. Ich habe den Artikel oben entsprechend ergänzt.

          Schöne Grüße,
          Martin

  • Avatar-Foto
    Sven

    Hallo Martin,

    Deine Lösung bringt mich auf ein Problem was ich schon länger lösen möchte, jedoch bis jetzt noch keine passende einfache Lösung dazu gefunden habe:

    1. Teil: Kann man die Formel so umstellen/erweitern, dass man den Zeilenbereich nach der letzten befüllten Zeile ermitteln kann, die Tabelle ist natürlich begrenzt als Beispiel von Zeile 1 -50, Beispiel für die Spalte A: =INDEX($A$1:$A$50;MAX(VERGLEICH(-999;$A$1:$A$50;-1);VERGLEICH(„“;$A$1:$A$50;-1)))
    Das Ergebnis für den leeren Zeilenbereich nach der letzten befüllten Zeile, müsste also in Deinem Beispiel lauten: Tabelle1!$21:$50

    2. Teil: Das ermittelte Ergebnis des leeren Zeilenbereiches möchte ich in einen „definierten Namen“ dynamisch einbauen. Ist das möglich, wenn ja wie?

    3. Teil: Den dynamischen „definierten Namen“, nennen wir Ihn mal „leere_Zeilen_ausblenden“
    Möchte ich in einen Hyperlink einbauen der zum Beispiel so aussieht: =WENN($A21=““;HYPERLINK(„#leere_Zeilen_ausblenden“;“Links-Klick > Rechts-Klick > Ausblenden“);““). Der Hyperlink wird also nur dann angezeigt wenn die abgefragte Zelle leer ist.

    Da man ja leere Zeilen einer Tabelle, automatisch ermitteln und ausblenden nur mit VBA lösen kann, ich jedoch kein VBA nutzen möchte, soll zumindest das ausblenden der leeren Zeilen vereinfacht werden, halt mit einem Hyperlink auf einen „definierten Namen“ der einen Zeilenbereich beinhaltet.

    Wäre super wenn Du mir hier helfen könntest. Zurzeit habe ich es so gelöst, dass ich für eine Tabelle mit 50 Zeilen, 50 „definierte Namen“ angelegt habe, nach dem Schema:
    Name: leere_Zeilen_ausblenden_ab_2
    Bezieht sich auf: =Tabelle1!$2:$50
    Name: leere_Zeilen_ausblenden_ab_3
    Bezieht sich auf: =Tabelle1!$3:$50
    usw.
    und dann noch 50 Hyperlinks nach dem Schema:
    =WENN($A2=““;HYPERLINK(„#leere_Zeilen_ausblenden_ab_2″;“Links-Klick > Rechts-Klick > Ausblenden“);““).
    usw.
    Runterkopieren funktioniert hier leider nicht, da der Zähler im Hyperlink sich nicht hochzählt.

    Viele Grüße
    Sven

    • Avatar-Foto
      Sven

      Hallo Martin,

      ich habe mittlerweile eine bzw. mehrere Lösung(en) für mein Problem gefunden und beantworte meine Fragen mal selbst, für den Fall dass noch jemand so ein Thema hat.

      Zum 1. Teil:
      Die benötigte Formel lautet:
      =MAX(INDEX(($A$1:$A$50″“)*ZEILE($A$1:$A$50);0))+1&“:50″
      oder
      =SUMMENPRODUKT(MAX(($A$1:$A$50″“)*ZEILE($A$1:$A$50))+1)&“:50″
      Das Ergebnis der Formeln lautet jeweils: 21:50 Wenn die letzte gefüllte Zelle der auszuwertenden Spalte (also in dem Beispiel die Spalte A), die Zelle A20 ist. Es ist bei beiden Formeln egal ob Buchstaben oder Zahlen in der letzten befüllten Zelle stehen. Es ist auch egal, ob die Tabelle in Zeile 1 beginnt oder erst in Zeile 25, dann heißt es eben $A$25:$A$50.
      Die Formel:
      =VERGLEICH(„“;$A$1:$A$50;-1))+1&“:50″
      funktioniert auch, jedoch muss hier beachtet werden, wenn die Tabelle nicht in Zeile 1 beginnt, dann muss die +1 gegen die letzte Zeilennummer vor dem Tabellenbeginn ersetzt werden. Im obigen Beispiel muss es also +24 lauten.
      Die Formel trägt man in eine leere Zelle außerhalb der Tabelle ein, z.B. in K1

      Zum 2. Teil
      Um das Ergebnis dynamisch in einen „definierten Namen“, nennen wir Ihn mal „leere_Zeilen_ausblenden“, einzubauen, ist beim Anlegen des Namens im Feld „Bezieht sich auf:“ die folgende Formel einzugeben (für obiges Beispiel): =INDIREKT(Tabelle1!$K$1)

      Zum 3. Teil:
      Um beim obigen Beispiel zu bleiben, wird ein Hyperlink in Zelle L1 angelegt, der wie folgt lautet:
      =WENN($A1=““;HYPERLINK(„#leere_Zeilen_ausblenden“;“Links-Klick > Rechts-Klick > Ausblenden“);““). Dieser wird dann runterkopiert bis Zeile L50.
      In alle leeren Zeilen der Tabelle wird jetzt der Hyperlink angezeigt und wenn man diesen anklickt, werden alle leeren Zeilen markiert. Über einen Rechtsklick kann man diese dann relativ einfach ausblenden.

      Die Lösungsansätze habe ich auf den folgenden Seiten gefunden:
      https://www.tabellenexperte.de/finde-den-letzten-eintrag-einer-excel-liste/
      http://www.excelformeln.de/formeln.html?welcher=390
      http://www.excelformeln.de/formeln.html?welcher=48

      Viel Freude beim Nachmachen.
      Gruß
      Sven

      • Avatar-Foto
        Martin Weiß

        Hallo Sven,

        tut mir sehr leid, dass Deine Frage vom Juni bei mir untergegangen ist. Aber ist freut mich umso mehr, dass Du selbst noch eine Lösung gefunden hast und diese hier mit den anderen Lesern teilst.

        Schöne Grüße,
        Martin

  • Avatar-Foto
    menz stefan

    leider funktioniert die Funktion nicht, wenn in einer der „leeren“ Zellen in Spalte A die Zuweisung =““ steht. dann liefert vergeich() die Zeilenzahl dieser Zelle zurück. Kennst Du dafür eine Lösung?

    • Avatar-Foto
      Martin Weiß

      Hallo Stefan,

      dafür habe ich leider auch keine Lösung. Es wird schnell relativ kompliziert, sobald „richtige“ leere Zellen mit leeren Formelzellen gemischt werden.

      Tut mir leid,
      Martin

  • Avatar-Foto
    Helmut Gabriel

    Hallo, ich habe mich Stunden darin befasst, und nun bin ich dabei, es endlich zu begreifen, als ob eine Gefäßverstopfung in meinem Hirn auf einmal wieder durchbrochen wurde.
    Verstehe ich das richtig: Excel nimmt auch bei Wörtern an, dass es sich um Werte handelt, und betrachtet deshalb untereinander stehende Wörter (pro Zeile) als Werte, die nach unten immer kleiner werden?

    Bin schon 61.
    Bin schon froh, es verstanden zu haben, wäre aber nie selber darauf gekommen.

    • Avatar-Foto
      Martin Weiß

      Hallo Herr Gabriel,

      es ist wirklich eine etwas schräge Logik, aber in unserem Zusammenhang mit der VERGLEICH-Funktion werden die Wörter tatsächlich als so etwas wie Werte behandelt. Allerdings nur auf eine sehr grobe Art: Jedes Wort ist daher „größer“ als ein Leerzeichen.

      Und keine Sorge, ich bin überzeugt, dass hier wesentlich jüngere Semester genauso ins Schlingern gekommen sind…

      Schöne Grüße,
      Martin

  • Avatar-Foto
    S. Smith

    Hallo,
    erstmal danke für die schöne Lösung des Problems, konnte ich schon erfolgreich in verschiedene Tabellen mit einbauen. Das ganze führt mich aber zu einem weiteren Problem, das glaube ich artverwandt ist:
    Ich habe eine Tabelle in die periodisch neue Rohdaten eingeben werden. In einem weiteren Tabellenblatt verarbeite ich diese in verschiedensten Weisen weiter, teilweise werden sie nur kopiert, teilweise verarbeitet.
    Gibt es eine elegante Lösung wie ich den Zellbereich der kopiert oder verarbeitet wird im zweiten Tabellenblatt der Länge der Rohdatenliste automatisch anpassen kann? Also eine automatische Zellbereichsanpassung anhand von einer anwachsenden Liste in Tabelle 1.

    Sprich wenn in Tabelle 1 in Zeile x+1 ein Wert eingegeben wird dieser auch in Tabelle 2 in Zeile x+1 auftauchen ohne dass ich vorher in Tabelle zwei die Formel oder den Bezug in Zeile x+1 eingeben habe.

    • Avatar-Foto
      Martin Weiß

      Hallo,

      für eine automatische Verlängerung der Liste gibt es zwei Lösungen: VBA-Programmierung oder Power-Query. Letzteres erfordert eine entsprechende Abfrage, die dann entweder beim Öffnen der Datei oder auf Knopfdruck („Alles aktualisieren“) die Daten neu einliest.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Fux

    Hallo,

    sehr hilfreich 🙂

    Nur leider stehe ich als Laie vor einem weiteren Problem, ich kann nicht ganz nachvollziehen wie man Funktionen verschachtelt.
    Über die Formel =INDEX(A:A;VERGLEICH(0;A:A;-1)) klappt mein Vorhaben in der Datei super, doch welche Anpassung muss ich vornehmen, wenn der Bezug in einer externen Datei liegt ?

    =’C:\Test\[Daten.xlsx]Tabelle1′!$A$19

    gibt mir den Wert aus. Wie bekomme ich den letzten Wert aus A in der Daten.xlsx ?

    In der Zelle nebenan soll dann noch der Inhalt der Nachbarzellen stehen ( Wie in Ihrem Beispiel )
    Bekommen diese dann die gleiche Formel angepasst auf B, oder kann man „nach rechts verschieben“

    • Avatar-Foto
      Martin Weiß

      Hallo Fux,

      am leichtesten geht es, wenn beide Dateien geöffnet sind. Wenn Sie dann Ihre Formel bearbeiten und mit der Maus die entsprechenden Bereich markieren, werden die richtigen Bezüge eingesetzt. Es sollte dann so etwas in der Art herauskommen:
      =INDEX([Daten.xlsx]Tabelle1!A:A;VERGLEICH(„“;[Daten.xlsx]Tabelle1!A:A;-1))

      Wenn Sie dann diese externe Datei dann wieder schließen, erweitern sich die Bezüge in der Formel auf den kompletten Pfad, also etwa so:
      =INDEX(‚C:\Test\[Daten.xlsx]Tabelle1′!A:A;VERGLEICH(„“;’C:\Test\[Daten.xlsx]Tabelle1‘!A:A;-1))

      Solange Sie keine $-Zeichen in den Spaltenbezügen verwenden, können Sie die Formel einfach nach rechts kopieren.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Martin

    Eigentlich funktioniert keine der hier vorgestellten Lösungen sobald ein Datum den letzen Wert in der Spalte darstellt.

    • Avatar-Foto
      Martin Weiß

      Hallo Namenskollege,

      das stimmt so nicht ganz. Sowohl im ersten Beispiel mit der durchgängigen Tabelle als auch in der Beispieltabelle mit den Leerzeichen funktioniert die Formel. Und zwar unabhängig davon, ob es Text, normale Zahlen oder Datumswerte sind. Voraussetzung ist natürlich, dass in der durchsuchten Spalte überhaupt etwas steht (und nicht nur in der letzten Spalte).

      Allerdings funktioniert die Formel aus dem letzten Beispiel tatsächlich nicht, wenn die erste Spalte auch numerische Werte (auch Datumswerte) enthält. Für diesen Fall schlage ich diese Formel vor:
      =INDEX(A:A;MAX(VERGLEICH(-999;A:A;-1);VERGLEICH(„“;A:A;-1)))

      Der Wert -999 ist ein beliebiger Wert, von dem ich annehme, dass er in der Tabelle nicht vorkommt.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    nils

    Hallo,

    ich weiss es gibt viele Lösungen.

    Aber mit der Anzahl un dem Offset (falls Leerzeilen) ist mir zu abstrakt.

    Ich verwende eine zusatzspalte: =ZEILE()*NICHT(ISTLEER(B3))
    Und dan ein Max auf die Spalte mit der Formel.

    Gruss
    Nils

    • Avatar-Foto
      Martin Weiß

      Hallo Nils,

      vielen Dank für Deine Lösung, das ist auch eine sehr gute Variante.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Kalle

    Hallo zusammen,

    nach diesem Ansatz habe ich schon lange gesucht. Danke für diesen Beitrag. Ergänzend möchte ich den ermittelten Wert der letzten Zeile für die Dynamisierung anderer Formeln und darin anthaltener Bereiche nutzbar machen. Wie sähe z.B. TEILERGEBNIS(103;B6:B300) aus, wenn ich statt dem Fixbereich B6:B300 lieber B6:BXYZ (XYZ soll hier der dynamische Wert sein). Mein Versuch bisher scheitert: TEILERGEBNIS(103;B6:B(Zeile(VERGLEICH(„“;A:A;-1)))) …

    Danke vorab und viele Grüße

    • Avatar-Foto
      Martin Weiß

      Hallo Kalle,

      für den genannten Zweck kann einfach die INDEX-Funktion oben aus dem Artikel als zweiten Teil des Bereichsbezuges verwendet werden. Um also beispielsweise den Bereich ab B6 dynamisch mit TEILERGEBNIS zu zählen, verwendest du folgende Formel:

      =TEILERGEBNIS(103;B6:INDEX(B:B;VERGLEICH(„“;$B:$B;-1)))

      Die INDEX-Funktion kann nämlich nicht nur einen Wert zurückliefern, sondern in bestimmten Fällen auch einen Bezug (eine Adresse).

      Schöne Grüße,
      Martin

      • Avatar-Foto
        Daniel

        Hallo Martin,

        Danke für Deine Hilfe. Warum mir Deine Lösung so wichtig ist: das Excelprojekt ist multiuser-verpflichtet, so dass intelligente Tabellen nicht nutzbar sind (ein gewaltiges Manko, wie ich finde). Den Zirkelbezug aus Deiner Formel habe ich via
        =TEILERGEBNIS(103;B6:INDEX(B:B;VERGLEICH(„“;$A:$A;-1))) aufgelöst. Wenn sich die „Zählbezugspalte“ mit dem Formelbereich überlagert, verträgt sich das nicht.
        Zudem gibt es ein Phänomen, was mir beim Anpassen der Formeln auffiel: normalerweise zeigt Excel beim Formelbau die Bezugsbereiche farblich an. Mit Deiner dynamischen Variante erwartete ich, dass die Zellbereiche mit der letzten Zeile abschließen, doch sie sind quasi bis ans Programmlimit markiert. Wie kann ich überprüfen, ob die Dynamisierung auch funktioniert?

        Viele Grüße,
        Daniel

        • Avatar-Foto
          Martin Weiß

          Hallo Daniel,

          ja, das mit dem nicht angezeigten Bezugsbereich ist ein Schwachpunkt. Ich sehe nur die Möglichkeit, den VERGLEICH-Teil innerhalb der Formel zu markieren und temporär mit der F9-Taste berechnen zu lassen. Dann wird die die Zeilennummer angezeigt. Anschließend wieder mit ESC abbrechen, damit die Formel nicht durch diesen Wert überschrieben wird.

          Schöne Grüße,
          Martin

          • Avatar-Foto
            Daniel

            Hi Martin,

            Danke für den Tipp; der Wertebereich nach dem F9 Trick stimmt soweit. Wenn man 30 – 40 Formeln auf Deine Methode umstellt, entsteht ganz schön viel Rechenlast und das Workbook wirkt träge. Somit ist der erwünschte Effekt nicht ganz eingetreten, wenngleich es eine vortreffliche Methode bleibt, die eine dynamisched Zeilenbestimmung ohne VBA ermöglicht.

            Viele Grüße
            Daniel

          • Avatar-Foto
            Martin Weiß

            Hi Daniel,

            ja, die Performance kann einen je nach konkreter Situation schon mal einholen. Es kommt einfach immer auf den Einzelfall an, welche Variante die bessere ist.

            Schöne Grüße,
            Martin

  • Avatar-Foto
    Gerd Hochgeschurtz

    Diese Formel zeigt die letzte benutzte Zeile in Spalte A an.
    =MAX(WENNFEHLER(VERGLEICH(„“;A:A;-1);1);WENNFEHLER(VERGLEICH(-1E+99;A:A;-1);1))
    Wegen eines Zirkelbezuges darf natürlich die Formel nicht in Spalte A stehen.
    Es ist eine Kombination aus (letzte Zahl finden) und (letzten Text finden).
    Viel Spaß, Gerd Hochgeschurtz