Подсчет последовательных пустых ячеек между непустыми ячейками в столбце - PullRequest
2 голосов
/ 06 октября 2019

Я пытаюсь подсчитать количество пустых ячеек между двумя непустыми ячейками в столбце. В частности, две даты и дни между этими двумя датами.

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

Мой образец листа

enter image description here

Ответы [ 2 ]

2 голосов
/ 06 октября 2019

последовательный сброс счетчика выполняется следующим образом:

=ARRAYFORMULA(IF(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)="", MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)=""))-HLOOKUP(0, MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)="")), MATCH(VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), ))

0


ОБНОВЛЕНИЕ:

=ARRAYFORMULA(QUERY(IF(iF(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)="", MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)=""))-HLOOKUP(0, MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)="")), MATCH(VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)<>G1:G), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), )=1, ARRAY_CONSTRAIN(SORT({IF(INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)="", MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>=TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)=""))-HLOOKUP(0, MMULT(N(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))>TRANSPOSE(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)))), N(INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)="")), MATCH(VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)<>{"×"; INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)}), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), VLOOKUP(ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), IF(N(INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)<>{"×"; INDEX(SORT({
 INDIRECT("G2:G"&COUNTA(F2:F)+1), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0),, 1)}), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1)), ), 1, 1), 0), 0), ), ROW(
 INDIRECT("G2:G"&COUNTA(F2:F)+1))}, 2, 0), 999^99, 1), ), "offset 1", 0))

0

1 голос
/ 06 октября 2019

В дополнение к решению, предоставленному player0, я создал дополнительный лист и вписал в ячейку I2

=ArrayFormula(if(len(G2:G), iferror(vlookup(G2:G, query({if(row(G2:G) <= max(if(not(isblank(F2:F)), row(G2:G))),vlookup(row(G2:G),filter({row(G2:G),G2:G},len(G2:G)),2),), --isblank(G2:G)}, "Select Col1, Sum(Col2) where Col2 > 0 group by Col1"), 2, 0)),))

Проверьте, работает ли это?

...