Google Spreadsheet: подсчет строк с не пустым значением
в электронной таблице Google: как я могу подсчитать строки данной области, которые имеют значение? Все подсказки об этом, которые я нашел до сих пор, приводят к формулам, которые подсчитывают строки, которые имеют не пустое содержимое (включая Формулу), а ячейку с =Если(1=2;"";"") // показывает пустую ячейку считается также.
что решение этой простой задачи?
спасибо заранее
9 ответов:
создайте другой столбец, который определяет, является ли ячейка ссылки пустой с помощью функции "CountBlank". Затем используйте count для значений, созданных в новом столбце "CountBlank".
=counta(range)
counta
: "возвращает количество значения в наборе данных"Примечание:
CountA
считает""
быть стоимостью. Только пустые ячейки (нажмите Удалить в ячейке, чтобы очистить ее) не учитываются.поддержка Google:https://support.google.com/docs/answer/3093991
countblank
: "возвращает количество пустой ячейки в a заданный диапазон"Примечание:
CountBlank
рассматривает как пустые ячейки (нажмите delete, чтобы очистить ячейку), так и ячейки с формулой, которая возвращает""
на пустой клетки.поддержка Google:https://support.google.com/docs/answer/3093403
если у вас есть диапазон, который включает формулы, которые приводят к
""
, затем вы можете изменить свою формулу от=counta(range)
to:
=Counta(range) - Countblank(range)
изменить: функция
countblank
, а неcountblanks
, последнее даст ошибку.
вот что я считаю лучшим решением до сих пор:
=CountIf(ArrayFormula(range<>""),TRUE)
вот почему в 3 простых шага
Шаг 1: Просто, Как Пирог - Добавить Дополнительный Столбец
The ответ eniacAvenger даст правильное решение, не беспокоясь о крайних случаях, как
=A1<>""
кажется, что мы приходим к правильному истинному / ложному значению, основанному на том, как мы интуитивно думаем о пустых ячейках, либо о девственных пробелах, либо о созданных пробелах.так представьте себе, что мы есть эти данные, и мы хотим, чтобы количество непустых в
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 |
если бы мы полагались на Столбец C, мы могли бы получить количество значений в B следующим образом:
=COUNTIF(C2:C6,True)
Шаг 2: Используйте
, комментарий consideRatio является допустимым - если вам нужен дополнительный столбец, вы часто можете достичь той же цели с помощьюFormulaArray
для динамического создания дополнительного столбцаArrayFormula
, который может создать столбец в памяти без еды листовое пространство.Итак, если мы хотим создать c динамически, мы можем использовать формулу массива, вроде такой:
=ArrayFormula(B2:B6<>"")
если мы просто поместим его в C2, он создаст вертикальный массив одним росчерком пера:
| | 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 |
Шаг 3: подсчет значений в динамическом столбце
но с этим решением нам больше не нужно, чтобы столбец просто отображал значения.
ArrayFormula
разрешит к следующему ряду:{True,True,False,True,False}
.CountIf
просто берет в любом диапазоне и в этом случае может посчитать количество истинных значений.так что мы можем обернуть
CountIf
вокруг значений, производимыхArrayFormula
такой:=CountIf(ArrayFormula(B2:B6<>""),TRUE)
Более Дальнеишее Чтение
другие решения в этом потоке либо чрезмерно сложны, либо терпят неудачу в конкретных краевых случаях, которые я перечислил в этом тестовом листе:
Google Spreadsheet-CountA Test-Demo
почему
CountA
работает wonky way это делает, см. мой ответ здесь
для меня ни один из ответов не работал для диапазонов, которые включают как девственные ячейки, так и пустые ячейки на основе формулы (например,
=IF(1=2;"";"")
)что решило это для меня это:
=COUNTA(FILTER(range, range <> ""))
решена с помощью решения, которое я нашел в гугле йоги Ананда:https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ
в приведенном ниже примере подсчитывается количество непустых строк в диапазоне A3: C, не забудьте обновить оба диапазона в Формуле с вашим диапазоном интересов.
=ArrayFormula(SUM(SIGN(MMULT(LEN(A3:C), TRANSPOSE(SIGN(COLUMN(A3:C)))))))
также убедитесь, что вы избегаете круговых зависимостей, это произойдет, если вы, например, посчитаете количество непустых строк в A: C и поместите эту формулу в A или колонка С.
более простое решение, которое работает для меня:
=COUNTIFS(A:A;"<>"&"")
он подсчитывает оба числа, строки, даты и т. д., которые не пусты
учитывая диапазон
A:A
, Id предложить:=COUNTA(A:A)-(COUNTIF(A:A,"*")-COUNTIF(A:A,"?*"))
проблема состоит в том, что COUNTA пересчитывается точно на количество ячеек с строками нулевой длины
""
.решение состоит в том, чтобы найти количество именно этих клеток. Это можно найти путем поиска всех текстовых ячеек и вычитания всех текстовых ячеек по крайней мере с одним символом
- COUNTA(A:A): ячейки со значением, включая
""
но исключая действительно пустой клетки- COUNTIF (A: A,"*"): ячейки распознаются как текст, включая
""
но исключая действительно пустые ячейки- COUNTIF(A: A,"?* "): ячейки, распознанные как текст по крайней мере с одним символом
это означает, что значение
COUNTIF(A:A,"*")-COUNTIF(A:A,"?*")
должно быть количество текстовых ячеек минус количество текстовых ячеек, которые имеют хотя бы один символ, т. е. количество ячеек, содержащих ровно""
очень гибкий способ сделать такие вещи-это использовать ARRAYFORMULA.
в качестве примера представьте, что вы хотите подсчитать непустые строки (текстовые поля) вы можете использовать этот код:
=ARRAYFORMULA(SUM(IF(Len(B3:B14)>0, 1, 0)))
здесь происходит то, что" ArrayFormula " позволяет вам работать над набором значений. Используя функцию SUM, вы указываете "ArrayFormula" для суммирования любого значения набора. Предложение " If "используется только для проверки" пусто "или" не пусто", 1 для not empty и 0 в противном случае. "Len" возвращает длину из различных текстовых полей есть место, где вы определяете набор (диапазон), который вы хотите проверить. Наконец, " ArrayFormula "будет суммировать 1 для каждого поля внутри набора(диапазона), в котором" len " возвращает больше 0.
Если вы хотите проверить любое другое условие, просто измените первый аргумент предложения IF.