Рассчитайте постоянно растущее количество столбцов с данными справа - PullRequest
0 голосов
/ 04 ноября 2019

В настоящее время есть электронная таблица, которая отслеживает посещаемость. Первый столбец - это имя, второй столбец - это посещаемость% и содержит формулу, которую мне нужно пересмотреть, в последующих столбцах просто есть X или O и они обозначают, присутствовал ли кто-то или нет (заголовки для этих столбцов - даты).

В настоящее время, используя COUNTIF(), я могу проверить, сколько есть X, и тогда формула будет SUM(100/no_of_columns*COUNTIF(A3:A12))

В идеале я хочу сначала заменить no_of_columns на фактическое количество столбцов с данными справа.

Я думал о том, чтобы заменить это на SUM(COUNTIF('X')+COUNTIF('O')), но это выглядит довольно грязно?

Во-вторых, я хочу заменить A12 на любое значение последнего столбца.

Я мог бы просто сделать последний столбец очень высоким значением столбца, но снова чувствую себя неопрятно и хотел бы знать, есть ли лучший способ ...

Пример: https://docs.google.com/spreadsheets/d/1rjnUQP7V-U1EZTp3Z8yO7HybBCuQjf2y4LJ4Dv4ctF8/edit?usp=sharing

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

вставить в B2 :

=ARRAYFORMULA(IFERROR(IF(LEN(A2:A), 
         MMULT(IF(INDIRECT("C2:"&ADDRESS(ROWS(A2:A), MAX(IF(1:1<>"", COLUMN(1:1), ))))="x", 1, 0), 
 TRANSPOSE(COLUMN(INDIRECT("C2:"&ADDRESS(ROWS(A2:A), MAX(IF(1:1<>"", COLUMN(1:1), )))))^0))/
         MMULT(IF(INDIRECT("C2:"&ADDRESS(ROWS(A2:A), MAX(IF(1:1<>"", COLUMN(1:1), ))))<>"", 1, 0), 
 TRANSPOSE(COLUMN(INDIRECT("C2:"&ADDRESS(ROWS(A2:A), MAX(IF(1:1<>"", COLUMN(1:1), )))))^0))*100, ), 0))

0

демонстрация электронной таблицы

0 голосов
/ 04 ноября 2019

Предположим, у вас есть только даты посещения в строке 1 без другой информации, такой как заголовки для столбцов A и B,

Поместите следующую формулу в ячейку B2 и перетащите ее вниз,

=COUNTIF(INDEX(OFFSET($C2,,,,COUNTA($1:$1)),),"x")/COUNTA($1:$1)*100

Логика заключается в том, чтобы использовать функцию INDEX + OFFSET , чтобы динамически возвращать диапазон столбцов справа, и использовать COUNTA , чтобы узнать, сколько там дат. , и вы должны понимать использование COUNTIF , расчет не требует пояснений.

РЕДАКТИРОВАТЬ # 2

После просмотра вВаш рабочий лист, я полагаю, вы добавляете новые даты, вставляя столбцы между B и C, так что вы, вероятно, захотите использовать следующую формулу в ячейке B2 вместо того, чтобы избежать автоматического смещения исходной ссылки на ячейку системой:

=COUNTIF(INDEX(OFFSET($B2,,1,,COUNTA($1:$1)),),"x")/COUNTA($1:$1)*100

Логика та же, что и у предыдущей, но только небольшое изменение ссылок OFFSET , поэтому он начинает искать диапазон от столбца B вместо C.

Я протестировал вышеупомянутое как в Excel, так и в Google-листах, работая отличноДайте знать, если у вас появятся вопросы. Ура :) 1031 *

...