Contare le righe con un valore non vuoto


128

In un foglio di calcolo Google: come posso contare le righe di una determinata area che hanno un valore? Tutti i suggerimenti su questo che ho trovato fino ad ora portano a formule che contano le righe che non hanno un contenuto vuoto (compresa la formula), ma una cella con

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

è contato pure.

Qual è la soluzione a questo semplice compito?


6
CountA non funzionerebbe per te? Si veda anche questa discussione SO: stackoverflow.com/questions/12519073/...
Ozair Kafray


Risposte:


-12

Crea un'altra colonna che determina se la cella di riferimento è vuota utilizzando la funzione "CountBlank". Quindi utilizzare count sui valori creati nella nuova colonna "CountBlank".


3
Considero questo come una chiara affermazione che non esiste altra soluzione a questo. Grazie mille.
Robbit,

Quando hai bisogno di aggiungere un'altra colonna, puoi quasi sempre risolverlo usando alcune formule extra come contenere un po 'di concatinate / split / join, ecc.
conside Ratio

Ad esempio, la riga seguente crea una singola riga da un intervallo di celle 2d, che spesso può risolvere molti problemi: = split (ArrayFormula (concatenate (C3: O4 & ";")), ";") --- - continuerò a lavorare per risolvere il problema
conside Ratio

Ho pubblicato una risposta che risolve l'obiettivo senza fare affidamento su colonne separate
conside Ratio

203

Ho appena usato =COUNTIF(Range, "<>")e contava celle non vuote per me.


14
Sfortunatamente, questa formula conta anche le celle con le formule dei risultati vuoti.
Dávid Veszelovszki,

23
Ho avuto lo stesso problema di @ DávidVeszelovszki [sono state contate le formule]. Ho risolto con=COUNTIF(Range,"?*")
shawnrad il

La domanda è: come contare le righe in un intervallo. Stai contando le celle in un intervallo?
AnnanFay,

124
=counta(range) 
  • counta: "Restituisce un conteggio del numero di valori in un set di dati"

    Nota: CountAconsidera ""un valore . Solo le celle vuote (premere Elimina in una cella per cancellarla) non vengono conteggiate.

    Assistenza Google: https://support.google.com/docs/answer/3093991

  • countblank: "Restituisce il numero di celle vuote in un determinato intervallo"

    Nota: CountBlankconsidera sia le celle vuote (premere cancella per svuotare una cella) sia le celle che hanno una formula che ritorna ""ad essere celle vuote .

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

Se hai un intervallo che include formule che ne risultano "", puoi modificare la tua formula da

=counta(range)

per:

=Counta(range) - Countblank(range)

EDIT: la funzione è countblank, no countblanks, quest'ultima darà un errore.


5
Sfortunatamente, questo non funziona per gli intervalli che includono sia gli spazi vergini che gli spazi calcolati. (
Sottrae gli

3
Grazie per i dolci downvotes, l'OP ha menzionato specificamente che il motivo per cui ha spazi vuoti è a causa della formula like = IF (1 = 2; ""; ""), e ho specificamente menzionato: "Se hai un intervallo che include formule che risultato in "" ... "
Delta_zulu

La domanda è: come contare le righe in un intervallo. Stai contando le celle in un intervallo?
AnnanFay,

38

Ecco quello che credo sia la soluzione migliore finora:

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

Ecco perché in 3 semplici passaggi

Passaggio 1: Semplice come torta - Aggiungi colonna aggiuntiva

La risposta di eniacAvenger produrrà la soluzione corretta senza preoccuparsi dei casi limite come =A1<>""sembra arrivare al valore di verità / falsità corretto in base al modo in cui intuitivamente pensiamo alle celle vuote, sia vergini che vuote.

Quindi immagina di avere questi dati e vogliamo il conteggio dei non-spazi 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   |

Se facessimo affidamento sulla colonna C , potremmo ottenere il conteggio dei valori in B in questo modo:

=COUNTIF(C2:C6,True)

Passaggio 2: utilizzare FormulaArrayper creare dinamicamente una colonna aggiuntiva

Però, il commento di consideRatio è valido: se hai bisogno di una colonna aggiuntiva, puoi spesso raggiungere lo stesso obiettivo con un ArrayFormulaquale può creare una colonna in memoria senza occupare spazio nel foglio.

Quindi, se vogliamo creare C in modo dinamico, possiamo usare una formula di matrice come questa:

=ArrayFormula(B2:B6<>"")

Se lo mettessimo semplicemente in C2, creerebbe l'array verticale con un solo tratto della penna:

|   |      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                    |

Passaggio 3: contare i valori nella colonna dinamica

Ma con quello risolto, non abbiamo più bisogno della colonna per visualizzare semplicemente i valori.

ArrayFormularisolverà per il seguente intervallo: {True,True,False,True,False}.
CountIfaccetta solo qualsiasi intervallo e in questo caso può contare il numero di valori True.

Quindi possiamo avvolgere CountIfi valori prodotti in ArrayFormulaquesto modo:

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

Ulteriori letture

Le altre soluzioni in questo thread sono eccessivamente complesse o falliscono in casi limite particolari che ho elencato in questo foglio di prova:

Foglio di calcolo Google - CountA Test - Demo

Per quale motivo CountAfunziona nel modo strano, vedi la mia risposta qui


4
Questa risposta è l'unica soluzione completa: conta correttamente solo le celle con testo (incluso spazio), numeri e valori VERO / FALSO, escludendo spazi generati, celle veramente vuote ed errori (# N / A, #REF !, #VALUE , #NOME?) . Restituirà anche 0 dove non ci sono valori
spacepickle

2
Mi sono un po 'confuso leggendo questo, e ho scoperto per caso che anche questa formula funziona ... = CountIf (ArrayFormula (B2: B6 <> ""), VERO) ... Per favore, non fraintendetemi, questa risposta è il migliore, e dovrebbe essere votato di più.
twindham

2
@twindham, d'accordo, che in termini di costruzione dei blocchi di questa risposta è probabilmente più facile mantenere intatto ogni componente logico e riordinare ArrayFormula(...)per restituire l'array di valori all'interno di CountIfcome hai suggerito. Ho aggiornato la risposta e la demo del foglio di calcolo. Entrambi faranno la stessa cosa, ma la pulizia è accanto alla bontà.
KyleMit,

La domanda è: come contare le righe in un intervallo. Stai contando le celle non vuote in una singola colonna? Il tuo approccio può funzionare su più colonne?
AnnanFay,

19

Per me, nessuna delle risposte ha funzionato per intervalli che includono sia celle vergini che celle vuote in base a una formula (ad es. =IF(1=2;"";""))

Ciò che ha risolto per me è questo:

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


Ottima soluzione nel caso in cui una colonna b contenga formali che restituiscono un valore ""! Grazie mille
user1561325

Sfortunatamente, sembra che se Filter()non trova alcun elemento, restituirà #N/Aquale COUNTA()tratta come elemento e quindi restituirà sempre 1, anche se il conteggio dovrebbe essere zero. Esempio in Fogli Google
KyleMit

7
@KyleMit Puoi eliminare il problema del conteggio zero aggiungendo un valore costante all'intervallo e sottraendo 1 dal con con=COUNTA(filter({1;range},{1;range}<>"")) - 1
spacepickle

La domanda è: come contare le righe in un intervallo. Stai contando le celle in un intervallo. Questo codice si interrompe se si tenta di applicarlo a un intervallo di righe.
AnnanFay,

9

Risolto usando una soluzione che ho trovato su Google da Yogi Anand: https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ

L'esempio seguente conta il numero di righe non vuote nell'intervallo A3: C, ricorda di aggiornare entrambi gli intervalli nella formula con l'intervallo di interesse.

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

Assicurati anche di evitare dipendenze circolari, accadrà se, ad esempio, conti il ​​numero di righe non vuote in A: C e inserisci questa formula nella colonna A o C.


1
Ho trovato una soluzione molto più pulita, l'ho pubblicata come una nuova risposta.
Dávid Veszelovszki,

1
L'unica soluzione che risponde alla domanda per contare il numero di righe con cella non vuota all'interno e non contare il numero di celle non vuote in un intervallo.
Kpym,

7

Per me funziona:

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

Conteggio di tutte le celle non vuote da F2 alla fine della colonna


5

Data la gamma A:A, Id suggerisce:

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

Il problema è che COUNTA sovrasta il conteggio del numero esatto di celle con stringhe di lunghezza zero "".

La soluzione è trovare un conteggio di esattamente queste celle. Questo può essere trovato cercando tutte le celle di testo e sottraendo tutte le celle di testo con almeno un carattere

  • COUNTA (A: A): celle con valore, incluse ""ma escluse le celle veramente vuote
  • COUNTIF (A: A, "*"): celle riconosciute come testo, incluse ""ma escluse le celle veramente vuote
  • COUNTIF (A: A, "? *"): Celle riconosciute come testo con almeno un carattere

Ciò significa che il valore COUNTIF(A:A,"*")-COUNTIF(A:A,"?*")dovrebbe essere il numero di celle di testo meno il numero di celle di testo che hanno almeno un carattere, ovvero il conteggio delle celle che contengono esattamente""


Usando il foglio demo di @KyleMit, ho trovato che questa formula supera ancora i conteggi perché includerà tutte le celle con errori
spacepickle

C'è una differenza tra una cella che contiene una stringa di lunghezza zero e una cella che non contiene nulla? Questo è ciò che rende le persone diffidenti nei confronti dei computer. . . Vedi perché non possiamo avere cose carine?
Cheeso,

La domanda è: come contare le righe in un intervallo. Stai contando le celle in un intervallo?
AnnanFay,

5

Una soluzione più semplice che funziona per me:

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

Conta sia numeri, stringhe, date, ecc. Che non sono vuoti


5
potrebbe essere semplificato in una forma come = COUNTIF (A: A, "<>")
Tom

La domanda è: come contare le righe in un intervallo. Stai contando le celle in un intervallo?
AnnanFay,

3

Per quanto posso vedere, la maggior parte delle soluzioni qui contano il numero di celle non vuote e non il numero di righe con celle non vuote all'interno.

Una possibile soluzione per la gamma B3:E29è ad esempio

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

Qui ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1))restituisce una colonna di 0(se la riga è vuota) e1 (else).

Un altro è dato nella risposta di conside Ratio .


2

Puoi definire una funzione personalizzata usando Apps Script (Strumenti> Script editor) chiamato ad esempio numNonEmptyRows:

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;
  }
}

E poi usalo in una cella come questa =numNonEmptyRows(A23:C25)per contare il numero di righe non vuote nell'intervallo A23:C25;



1

Un modo molto flessibile per fare questo tipo di cose è usare ARRAYFORMULA.

Ad esempio, immagina di voler contare stringhe non vuote (campi di testo), puoi usare questo codice:

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

Quello che succede qui è che "ArrayFormula" ti consente di operare su un insieme di valori. Usando la funzione SUM si indica "ArrayFormula" per sommare qualsiasi valore dell'insieme. La clausola "If" viene utilizzata solo per controllare "vuoto" o "non vuoto", 1 per non vuoto e 0 altrimenti. "Len" restituisce la lunghezza dei diversi campi di testo, qui è dove si definisce il set (intervallo) che si desidera verificare. Infine "ArrayFormula" sommerà 1 per ogni campo all'interno del set (intervallo) in cui "len" restituisce più di 0.

Se si desidera verificare qualsiasi altra condizione, è sufficiente modificare il primo argomento della clausola IF.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.