Ось що я вважаю найкращим рішенням поки що:
=CountIf(ArrayFormula(range<>""),TRUE)
Ось чому в 3 простих кроки
Крок 1: Простий як пиріг - додайте додатковий стовпчик
Відповідь на eniacAvenger дасть правильне рішення , не піклуючись про випадки країв , як =A1<>""
здається , щоб прийти до правильного truthy / falsy вартості , заснованим на тому , як ми інтуїтивно думати про порожніх клітинках, або незаймані заготовки або створені заготовки.
Тож уявіть, що у нас є ці дані, і ми хочемо, щоб кількість непрацьованих звітів була 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 |
Якби ми покладалися на стовпчик С , ми могли б отримати кількість значень у B так:
=COUNTIF(C2:C6,True)
Крок 2: Використовуйте FormulaArray
для динамічного створення додаткового стовпця
Однак коментар obzirRatio є дійсним - якщо вам потрібен додатковий стовпець, ви часто можете досягти тієї самої мети, з 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
просто займає будь-який діапазон, і в цьому випадку можна порахувати кількість значень True.
Таким чином, ми можемо обернутися CountIf
навколо значень, отриманих ArrayFormula
таким чином:
=CountIf(ArrayFormula(B2:B6<>""),TRUE)
Подальше читання
Інші рішення в цій темі або надмірно складні, або не вдається в окремих крайніх випадках, які я перерахував у цьому тестовому аркуші:
Чому це CountA
працює виграшно, як це робиться, дивіться мою відповідь тут