Google Sheets - СЧИТАЙТЕ УНИКАЛЬНЫЕ значения по группам ТОЛЬКО ЕСЛИ НЕ СЧИТАЕТСЯ в предыдущей группе - PullRequest
0 голосов
/ 14 мая 2019

Я надеюсь четко объяснить, что я пытаюсь сделать.

У меня есть некоторые данные в столбце B, сгруппированные, как показано в столбце A.

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

Например, я бы хотел:

  • считать уникальные значения в 'proyecto2' НЕ СЧИТЫВАЯ уникальные значения, уже присутствующие в 'proyecto1'.
  • считать уникальные значения в 'proyecto3' НЕ СЧИТЫВАЯ уникальные значения, уже присутствующие в 'proyecto1' и 'proyecto2'.
  • считать уникальные значения в 'proyecto4', НЕ СЧИТАЯ уникальные значения, уже присутствующие в 'proyecto1', 'proyecto2' и 'proyecto3'.
  • и т. Д. ...

Ниже вы можете найти Google Sheet с решением, которое я нашел, даже если я не очень доволен им, чтобы легко показать, что я имею в виду.

https://docs.google.com/spreadsheets/d/1x8S76_6dUnHr1NtUbzNzpLTpQtqan6_ohemcrGsrpC0/edit#gid=0

В основномВ столбце A: B у нас есть входные данные.Вы можете добавить данные в столбцы A и B, чтобы увидеть, как это работает (мой метод, на данный момент, работает, только если вы добавляете одну из следующих групп в столбец A: 'proyecto1', 'proyecto2', 'proyecto3', 'proyecto4', 'proyecto5' и 'proyecto6').

В столбце D: E у нас есть выходные данные, в основном уникальные значения, подсчитанные группой.

В столбце G: W,формула для обработки данных.

Ясно, что мой метод работает до 'proyecto6', так как в «столбцах обработки» я учитываю формулу только до «proyecto6».

Все работает, но мой вопрос: не могли бы вы предложить мне более динамичный способ достижения того, что я пытаюсь сделать?Или единственный способ написать код?

1 Ответ

1 голос
/ 15 мая 2019
  • удалить все в диапазоне D: Z
  • вставить в D2 ячейку:

    =UNIQUE(A2:A)

  • вставить в E2 ячейку:

    =ARRAYFORMULA(IF(LEN(D2:D); MMULT(IFERROR(LEN(G2:Z)/LEN(G2:Z); 0); TRANSPOSE(COLUMN(G2:Z2)^0)); ))

  • вставить в G2 ячейку:

    =TRANSPOSE(UNIQUE(FILTER(B$2:B; A$2:A=D2)))

  • вставьте в ячейку G3 и перетащите вниз:

    =TRANSPOSE(UNIQUE(FILTER(FILTER(B$2:B; A$2:A=D3); NOT(COUNTIF(INDIRECT("G2:"&ROW()-1); FILTER(B$2:B; A$2:A=D3)))))) 0

...