Ось що я вважаю найкращим рішенням поки що:
=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працює виграшно, як це робиться, дивіться мою відповідь тут