W arkuszu kalkulacyjnym Google: jak policzyć wiersze w danym obszarze, które mają wartość? Wszystkie wskazówki na ten temat, które znalazłem do tej pory, prowadzą do formuł, które liczą wiersze, które nie mają pustej treści (w tym formuły), ale komórkę z
=IF(1=2;"";"") // Shows an empty cell
jest również liczona.
Jakie jest rozwiązanie tego prostego zadania?
Odpowiedzi:
Utwórz kolejną kolumnę, która określa, czy komórka, której dotyczy odwołanie, jest pusta, używając funkcji „CountBlank”. Następnie użyj count na wartościach utworzonych w nowej kolumnie „CountBlank”.
źródło
Właśnie użyłem
=COUNTIF(Range, "<>")
i policzyło dla mnie niepuste komórki.źródło
=COUNTIF(Range,"?*")
counta
: "Zwraca liczbę wartości w zbiorze danych"Uwaga:
CountA
uważa""
się za wartość . Tylko komórki, które są puste (naciśnij klawisz Delete w komórce, aby ją wyczyścić) nie są liczone.Pomoc Google: https://support.google.com/docs/answer/3093991
countblank
: "Zwraca liczbę pustych komórek w podanym zakresie"Uwaga:
CountBlank
uwzględnia zarówno puste komórki (naciśnij klawisz Delete, aby wyczyścić komórkę), jak i komórki, które mają formułę, która wraca""
jako puste komórki.Pomoc Google: https://support.google.com/docs/answer/3093403
Jeśli masz zakres obejmujący formuły, których wynikiem jest
""
, możesz zmodyfikować formułę zdo:
EDYCJA: funkcja jest
countblank
, niecountblanks
, ta ostatnia spowoduje błąd.źródło
Oto, co uważam za najlepsze do tej pory rozwiązanie:
Oto dlaczego w 3 prostych krokach
Krok 1: Proste jak ciasto - Dodaj dodatkową kolumnę
Odpowiedź przez eniacAvenger przyniesie właściwe rozwiązanie, bez martwienia się o przypadkach brzegowych jak
=A1<>""
zdaje się przybyć w odpowiednim truthy / wartość falsy oparciu o jak my intuicyjnie myśleć o pustych komórek, zarówno pierwotne półfabrykatów lub utworzone półfabrykatów.Więc wyobraź sobie, że mamy te dane i chcemy, aby liczba elementów niebędących pustymi była w
B2:B6
:Gdybyśmy polegali na kolumnie C , moglibyśmy uzyskać liczbę wartości w B w następujący sposób:
Krok 2: Użyj,
FormulaArray
aby dynamicznie utworzyć dodatkową kolumnęJednak komentarz consideRatio jest ważny - jeśli potrzebujesz dodatkowej kolumny, często możesz osiągnąć ten sam cel, dzięki
ArrayFormula
czemu możesz utworzyć kolumnę w pamięci bez zajmowania miejsca w arkuszu.Więc jeśli chcemy tworzyć C dynamicznie, możemy użyć formuły tablicowej takiej jak ta:
Gdybyśmy po prostu umieścili go w C2, utworzyłoby pionową tablicę jednym pociągnięciem pióra:
Krok 3: Policz wartości w kolumnie dynamicznej
Ale po rozwiązaniu tego problemu nie potrzebujemy już kolumny do wyświetlania jedynie wartości.
ArrayFormula
rozwiąże z następującym zakresie:{True,True,False,True,False}
.CountIf
po prostu przyjmuje dowolny zakres iw tym przypadku może policzyć liczbę wartości True.Więc możemy zawinąć
CountIf
wartości wytworzone wArrayFormula
ten sposób:Dalsze czytanie
Inne rozwiązania w tym wątku są albo zbyt złożone, albo zawodzą w szczególnych przypadkach skrajnych, które wyliczyłem w tym arkuszu testowym:
Arkusz kalkulacyjny Google - CountA Test - Demo
Dlaczego
CountA
działa tak dziwnie, zobacz moją odpowiedź tutajźródło
ArrayFormula(...)
aby zwrócić tablicę wartości wewnątrz,CountIf
tak jak sugerowałeś. Zaktualizowałem odpowiedź i prezentację arkusza kalkulacyjnego. Oboje zrobią to samo, ale czystość jest równa dobroci.Dla mnie żadna z odpowiedzi nie działała dla zakresów obejmujących zarówno komórki pierwotne, jak i komórki puste na podstawie formuły (np.
=IF(1=2;"";"")
)Rozwiązało to dla mnie to:
=COUNTA(FILTER(range, range <> ""))
źródło
Filter()
nie znajdzie żadnych elementów, zwróci,#N/A
któryCOUNTA()
traktuje jako element, więc zawsze zwróci 1, nawet jeśli liczba powinna wynosić zero. Przykład w Arkuszach Google=COUNTA(filter({1;range},{1;range}<>"")) - 1
Rozwiązany za pomocą rozwiązania, które znalazłem googling autorstwa Yogi Ananda: https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ
Poniższy przykład zlicza liczbę niepustych wierszy w zakresie A3: C, pamiętaj, aby zaktualizować oba zakresy w formule o interesujący Cię zakres.
Upewnij się również, że unikasz zależności cyklicznych, stanie się tak, jeśli na przykład policzysz liczbę niepustych wierszy w A: C i umieścisz tę formułę w kolumnie A lub C.
źródło
To dla mnie praca:
Zliczanie wszystkich niepustych komórek od F2 do końca kolumny
źródło
Biorąc pod uwagę zakres
A:A
, sugeruję:Problem polega na tym, że COUNTA przekracza dokładnie liczbę komórek z ciągami o zerowej długości
""
.Rozwiązaniem jest znalezienie liczby dokładnie tych komórek. Można to znaleźć, wyszukując wszystkie komórki tekstowe i odejmując wszystkie komórki tekstowe zawierające co najmniej jeden znak
""
z prawdziwie pustymi komórkami""
ale z wyłączeniem, prawdziwie pustych komórekOznacza to, że wartością
COUNTIF(A:A,"*")-COUNTIF(A:A,"?*")
powinna być liczba komórek tekstowych pomniejszona o liczbę komórek tekstowych, które mają co najmniej jeden znak, tj. Liczba komórek zawierających dokładnie""
źródło
Prostsze rozwiązanie, które działa dla mnie:
Zlicza zarówno liczby, ciągi znaków, daty itp., Które nie są puste
źródło
O ile widzę, większość rozwiązań tutaj liczy liczbę niepustych komórek, a nie liczbę wierszy z niepustą komórką w środku.
Jednym z możliwych rozwiązań dla zakresu
B3:E29
jest na przykładTutaj
ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1))
zwraca kolumnę0
(jeśli wiersz jest pusty) i1
(else).Kolejny jest podany w odpowiedzi consideRatio .
źródło
Możesz zdefiniować funkcję niestandardową za pomocą Apps Script (Narzędzia> Edytor skryptów) o nazwie na przykład
numNonEmptyRows
:Następnie użyj go w komórce takiej jak ta,
=numNonEmptyRows(A23:C25)
aby policzyć liczbę niepustych wierszy w zakresieA23:C25
;źródło
Aby policzyć w Arkuszach Google liczbę wierszy zawierających co najmniej jedną niepustą komórkę w dwuwymiarowym zakresie :
Gdzie A1: C5 to zakres, w którym sprawdzasz niepuste wiersze.
Formuła pochodzi z i jest wyjaśniona w następującym artykule z EXCELXOR - https://excelxor.com/2015/03/30/counting-rows-where-at-least-one-condition-is-met/
źródło
Bardzo elastycznym sposobem robienia tego typu rzeczy jest użycie ARRAYFORMULA.
Jako przykład wyobraź sobie, że chcesz policzyć niepuste ciągi (pola tekstowe), możesz użyć tego kodu:
To, co się tutaj dzieje, to fakt, że „ArrayFormula” pozwala operować na zbiorze wartości. Używając funkcji SUMA, wskazujesz "ArrayFormula", aby zsumować dowolną wartość zestawu. Klauzula „Jeśli” jest używana tylko do sprawdzania „pustych” lub „niepustych”, 1 oznacza niepuste, a 0 w przeciwnym razie. „Len” zwraca długość różnych pól tekstowych, w tym miejscu definiujesz zestaw (zakres), który chcesz sprawdzić. Na koniec „ArrayFormula” zsumuje 1 dla każdego pola wewnątrz zbioru (zakresu), w którym „len” zwraca więcej niż 0.
Jeśli chcesz sprawdzić inny warunek, po prostu zmodyfikuj pierwszy argument klauzuli IF.
źródło