it-swarm.com.de

Zähle Zeilen mit nicht leerem Wert

In einer Google-Tabelle: Wie kann ich die Zeilen eines bestimmten Bereichs zählen, die einen Wert haben? Alle Hinweise, die ich bisher gefunden habe, führen zu Formeln, die die Zeilen zählen, die keinen leeren Inhalt (einschließlich Formel) haben, sondern eine Zelle mit 

=IF(1=2;"";"")  // Shows an empty cell

wird auch gezählt.

Was ist die Lösung für diese einfache Aufgabe?

67
Robbit

Ich habe gerade =COUNTIF(Range, "<>") benutzt und es zählte für mich nicht leere Zellen. 

113
Mike
=counta(range) 
  • counta: "Gibt die Anzahl der values ​​ in einer Datenmenge zurück"

    Hinweis: CountA betrachtet "" als value. Nur leere Zellen (Löschen in einer Zelle zum Löschen drücken) werden nicht gezählt. 

    Google-Unterstützung: https://support.google.com/docs/answer/3093991

  • countblank: "Gibt die Anzahl der empty - Zellen in einem bestimmten Bereich zurück"

    Hinweis: CountBlank berücksichtigt sowohl leere Zellen (drücken Sie die Löschtaste, um eine Zelle zu leeren) als auch Zellen, deren Formel "" in leere Zellen zurückgibt.

    Google Support: https://support.google.com/docs/answer/3093403

Wenn Sie über einen Bereich verfügen, der Formeln enthält, die zu "" führen, können Sie Ihre Formel von ändern

=counta(range)

zu:

=Counta(range) - Countblank(range)

BEARBEITEN: Die Funktion ist countblank, nicht countblanks, letztere gibt einen Fehler aus.

71
Delta_zulu

Hier ist meiner Meinung nach die bisher beste Lösung:

=CountIf(ArrayFormula(range<>""),TRUE)

Hier ist der Grund dafür in drei einfachen Schritten

Schritt 1: Einfach wie Torte - Zusätzliche Spalte hinzufügen

Die Antwort von eniacAvenger ergibt die richtige Lösung, ohne sich über Edge-Fälle Gedanken zu machen, da =A1<>"" den korrekten Wahrheits-/Falschwert zu ermitteln scheint, basierend auf dem, wie wir intuitiv von leeren Zellen denken, entweder von leeren Leerzeichen oder von leeren Leerzeichen. 

Stellen Sie sich vor, wir haben diese Daten und wir wollen die Anzahl der Nicht-Leerzeichen in B2:B6:

|   |      A      |   B   |    C    |
|---|-------------|-------|---------|
| 1 | Description | Value | B1<>""  |
| 2 | Text        | H     | TRUE    |
| 3 | Number      | 1     | TRUE    |
| 4 | IF -> ""    |       | FALSE   |
| 5 | IF -> Text  | h     | TRUE    |
| 6 | Blank       |       | FALSE   |

Wenn wir uns auf Column C stützten, könnten wir die Anzahl der Werte in B wie folgt ermitteln:

=COUNTIF(C2:C6,True)

Schritt 2: Verwenden Sie FormulaArray, um die Zusatzspalte dynamisch zu erstellen

consideRatios Kommentar ist jedoch ein gültiger Kommentar. Wenn Sie eine zusätzliche Spalte benötigen, können Sie oft dasselbe Ziel mit einer ArrayFormula erreichen, die eine Spalte im Speicher erstellen kann, ohne den Tabellenplatz zu belegen.

Wenn wir also C dynamisch erstellen wollen, können wir eine Matrixformel wie folgt verwenden:

=ArrayFormula(B2:B6<>"")

Wenn wir es einfach in C2 setzen, würde das vertikale Array mit einem einzigen Stiftstrich erstellt:

|   |      A      |   B   |    C                     |
|---|-------------|-------|--------------------------|
| 1 | Description | Value | =ArrayFormula(B2:B6<>"") |
| 2 | Text        | H     | TRUE                     |
| 3 | Number      | 1     | TRUE                     |
| 4 | IF -> ""    |       | FALSE                    |
| 5 | IF -> Text  | h     | TRUE                     |
| 6 | Blank       |       | FALSE                    |

Schritt 3: Werte in dynamischer Spalte zählen

Wenn das gelöst ist, brauchen wir die Spalte nicht mehr, um die Werte nur anzuzeigen.

ArrayFormula wird in den folgenden Bereich aufgelöst: {True,True,False,True,False}.
CountIf nimmt nur einen beliebigen Bereich und kann in diesem Fall die Anzahl der True-Werte zählen.

So können wir CountIf so um die von ArrayFormula erzeugten Werte wickeln:

=CountIf(ArrayFormula(B2:B6<>""),TRUE)

Lesen Sie weiter

Die anderen Lösungen in diesem Thread sind entweder zu komplex oder schlagen in bestimmten Edge-Fällen fehl, die ich in diesem Testblatt aufgeführt habe:

Google-Tabelle - CountA-Test - Demo

Warum CountA so wackelig arbeitet, siehe meine Antwort hier

23
KyleMit

Für mich hat keine der Antworten für Bereiche funktioniert, die sowohl jungfräuliche als auch leere Zellen enthalten, basierend auf einer Formel (z. B. =IF(1=2;"";"")).

Was es für mich gelöst hat, ist das:

=COUNTA(FILTER(range, range <> ""))

17

Gelöst mit einer Lösung habe ich von Yogi Anand googeln: https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ

Das Beispiel unten zählt die Anzahl der nicht leeren Zeilen im Bereich A3: C. Denken Sie daran, beide Bereiche in der Formel mit Ihrem Interessenbereich zu aktualisieren.

=ArrayFormula(SUM(SIGN(MMULT(LEN(A3:C), TRANSPOSE(SIGN(COLUMN(A3:C)))))))

Stellen Sie außerdem sicher, dass Sie zirkuläre Abhängigkeiten vermeiden. Dies geschieht, wenn Sie beispielsweise die Anzahl der nicht leeren Zeilen in A: C zählen und diese Formel in die Spalte A oder C einfügen.

6
consideRatio

Eine einfachere Lösung, die für mich funktioniert:

=COUNTIFS(A:A;"<>"&"")

Es zählt sowohl Zahlen als auch Zeichenfolgen, Datumsangaben usw., die nicht leer sind

5
user300905

In Anbetracht des Bereichs A:A schlägt Id vor:

=COUNTA(A:A)-(COUNTIF(A:A,"*")-COUNTIF(A:A,"?*"))

Das Problem ist, dass COUNTA um genau die Anzahl der Zellen mit den Zeichenfolgen der Länge Null "" überschreitet.

Die Lösung besteht darin, genau diese Zellen zu zählen. Dies kann gefunden werden, indem nach allen Textzellen gesucht und alle Textzellen mit mindestens einem Zeichen subtrahiert werden

  • COUNTA (A: A): Zellen mit Wert, einschließlich "", jedoch ohne wirklich leere Zellen
  • COUNTIF (A: A, "*"): Zellen, die als Text erkannt werden, einschließlich "", jedoch ausschließlich leere Zellen
  • COUNTIF (A: A, "? *"): Zellen, die als Text mit mindestens einem Zeichen erkannt werden

Dies bedeutet, dass der Wert COUNTIF(A:A,"*")-COUNTIF(A:A,"?*") die Anzahl der Textzellen minus der Anzahl der Textzellen sein sollte, die mindestens ein Zeichen enthalten, d. H. Die Anzahl der Zellen, die genau "" enthalten.

3
spacepickle

Soweit ich sehen kann, zählen die meisten Lösungen hier die Anzahl der nicht leeren Zellen und nicht die Anzahl der Zeilen mit nicht leeren Zellen.

Eine mögliche Lösung für den Bereich B3:E29 ist zum Beispiel 

=SUM(ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1)))

Hier gibt ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1)) eine Spalte von 0 (falls die Zeile leer ist) und 1 (sonst) zurück. 

Eine andere wird in consideRatios Antwort gegeben.

1
Kpym

Um in Google Sheets die Anzahl der Zeilen zu zählen, die mindestens eine nicht leere Zelle in einem zweidimensionalen Bereich enthalten :

=ARRAYFORMULA(
  SUM(
    N(
      MMULT(
        N(A1:C5<>""),
        TRANSPOSE(COLUMN(A1:C5)^0)
      )
      >0
    )
  )
)

Dabei ist A1: C5 der Bereich, den Sie auf nicht leere Zeilen überprüfen.

Die Formel stammt von und wird in dem folgenden Artikel von EXCELXOR - https://excelxor.com/2015/03/30/counting-rows-where-at-least-one-condition-is-met erläutert /

1
Will Rice

Es ist Arbeit für mich:

=SUMPRODUCT(NOT(ISBLANK(F2:F)))

Anzahl aller nicht leeren Zellen von F2 bis Ende der Spalte

1
nomnom

ARRAYFORMULA ist ein sehr flexibler Weg, solche Dinge zu tun.

Angenommen, Sie möchten nicht leere Zeichenfolgen (Textfelder) zählen, können Sie diesen Code verwenden:

=ARRAYFORMULA(SUM(IF(Len(B3:B14)>0, 1, 0)))

Was hier passiert, ist, dass Sie mit "ArrayFormula" eine Reihe von Werten bearbeiten können. Mit der SUMME-Funktion geben Sie "ArrayFormula" an, um einen beliebigen Wert der Menge zu summieren. Die "If" -Klausel wird nur verwendet, um "leer" oder "nicht leer" zu prüfen, 1 für nicht leer und sonst 0. "Len" gibt die Länge der verschiedenen Textfelder zurück. Dort definieren Sie die Menge (Bereich), die Sie überprüfen möchten. Schließlich addiert "ArrayFormula" 1 für jedes Feld innerhalb des Satzes (Bereichs), in dem "len" mehr als 0 zurückgibt.

Wenn Sie eine andere Bedingung prüfen möchten, ändern Sie einfach das erste Argument der IF-Klausel.

0
Pablo

Sie können eine benutzerdefinierte Funktion mithilfe von Apps Script (Tools> Script-Editor) definieren, die beispielsweise numNonEmptyRows aufgerufen wird:

function numNonEmptyRows(range) {
  Logger.log("inside");
  Logger.log(range);
  if (range && range.constructor === Array) {
    return range.map(function(a){return a.join('')}).filter(Boolean).length
  }
  else {
    return range ? 1 : 0;
  }
}

Und dann verwenden Sie es in einer Zelle wie dieser =numNonEmptyRows(A23:C25), um die Anzahl der nicht leeren Zeilen im Bereich A23:C25 zu zählen.

0
Kpym