Google Spreadsheet: подсчет строк с не пустым значением


в электронной таблице Google: как я могу подсчитать строки данной области, которые имеют значение? Все подсказки об этом, которые я нашел до сих пор, приводят к формулам, которые подсчитывают строки, которые имеют не пустое содержимое (включая Формулу), а ячейку с =Если(1=2;"";"") // показывает пустую ячейку считается также.

что решение этой простой задачи?

спасибо заранее

9 52

9 ответов:

создайте другой столбец, который определяет, является ли ячейка ссылки пустой с помощью функции "CountBlank". Затем используйте count для значений, созданных в новом столбце "CountBlank".

Я только что использовал =COUNTIF(Range, "<>") и он считал непустые ячейки для меня.

=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: Используйте FormulaArray для динамического создания дополнительного столбца

, комментарий consideRatio является допустимым - если вам нужен дополнительный столбец, вы часто можете достичь той же цели с помощью 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.