Объединить столбцы без удаления или влияния на строки - PullRequest
1 голос
/ 19 января 2020

Мне нужен опытный совет, так как я работал над небольшим проектом по автоматизации сбора данных в моем офисе с помощью Google Sheets (обратите внимание, что я не могу использовать надстройки). Я сталкиваюсь с трудностями при поиске способа объединения столбцов с одинаковыми именами, но без удаления / объединения строк (потому что я собираю статистику для разных задач, которые обрабатывают сотрудники).

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

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

Вот формула, которую я использую в c26:

=FILTER(A3:G22,ARRAYFORMULA(ISNUMBER(MATCH(A3:A22,{"Mary";"Jason";"Ana";"Jen";"Ben";"Helen";"Dan";"Richard";"Breg"},0))))

Пожалуйста, скажите, что есть способ сделать это!

Вот ссылка на пример Do c, который я сделал https://docs.google.com/spreadsheets/d/1RsCeHfzzbRsUDnj6UmmCdfzjryp-2xW09UTCx_qfIpA/edit?usp=sharing

Ответы [ 2 ]

1 голос
/ 20 января 2020

Здесь вы можете сделать это, но не можете объединить по формуле:

= ARRAYFORMULA ( 
    ifna ( 
      vlookup (
        ifna ( 
          sort (
            { row(A4:A22) * 
              len ( vlookup ( A4:A22,
                  {"Ana";"Jen";"Ben";"Helen";"Dan";"Richard";"Breg"},1,0)
              )^0}
            ,1,true
          ),""
        )
        , { row(A4:A22), 
            left(A4:A22, 1000 * 
                transpose (
                   split (join("","1," & rept("0,",countif(A4:A22,unique(A4:A22))-1)),",",true,true))
                ),
            B4:G22
          },{2,3,4,5,6,7,8},false
      ),""
    )
  )

enter image description here

Другая формула с тем же результатом:

= ARRAYFORMULA ( 
     ifna(vlookup (
          sort (
            { row(A4:A22) * 
              len ( vlookup ( A4:A22,
                  {"Ana";"Jen";"Ben";"Helen";"Dan";"Richard";"Breg"},1,0)
              )^0}
            ,1,true
          ), 
          { row(A4:A22),
            if(transpose(split(join(
               "","1," & rept("0,",COUNTIF(A4:A22,unique(A4:A22))-1)),",",true,true))=1,
               A4:A22,""
            ),B4:G22
          },{2,3,4,5,6,7,8},false),""
     )
  )
0 голосов
/ 19 января 2020

После небольшого обсуждения на листе этот запрос () будет отображать только одно имя для каждого агента, но по-прежнему перечислять все строки для этого агента.

=ARRAYFORMULA(ARRAY_CONSTRAIN(QUERY({Sheet1!A1:G22,IF(COUNTIFS(Sheet1!A1:A22,Sheet1!A1:A22,ROW(Sheet1!A1:A22),"<="&ROW(Sheet1!A1:A22))>1,"",Sheet1!A1:A22)},"select Col8,Col2,Col3,Col4,Col5,Col6,Col7,Col1 where Col1 matches '"&TEXTJOIN("|",TRUE,A2:A)&"' order by Col1 label Col8'Name'",3),9^99,7))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...