2016-09-11 3 views
1

나는 이와 같은 테이블을 가지고 있습니다. 실생활에서는 1000 개 이상의 행이 있습니다.내부에 필터와 내부 구조가있는 ARRAYFORMULA

 
Client | Group 
-------------- 
Merry | A 
Merry | C 
Susan | B 
Mike | C 
Susan | A 
Joe | A 
Tom | B 
Tom | C 

그리고 Google 양식에서 채워진 모든 고객의 목록이 있습니다. 첫 번째 행의 arrayformula 만 사용하여 모든 클라이언트의 그룹으로 Group 열을 채 웁니다. 내 원하는 출력은 이것이다 : 그것은 내가 원하는 것을하지만 난 하나에 모든 열을 가입 할 수 없습니다처럼

 
Name | Groups | | | | | | | | 
---------------------------------------------- 
Joe  |  | | | | | A | | | 
Tom  |  | | | | | | B | C | 
Mike |  | | | C | | | | | 
Merry | A | C | | | | | | | 
Susan |  | | B | | A | | | | 
Peter |  | | | | | | | | 

보이는 :

 
Name | Groups 
---------------- 
Joe  | A 
Tom  | B, C 
Mike | C 
Merry | A, C 
Susan | A, B 
Peter | 

내 최상의 결과는 아직입니다. 공식은 다음

= ARRAYFORMULA (IF (이름 <> ""; IF (NAME = TRANSPOSE (FILTER (클라이언트, LEN (클라이언트))), 트랜스 (FILTER (닐기; LEN (기)));)))))

"name", "client"및 "group"을 열 머리글에 따라 명명 된 범위로 사용했습니다. "최고 결과"이 시간에 링크 된 스프레드 시트에 H3:O8에있는 점을 고려 https://docs.google.com/spreadsheets/d/1VFnmyDTQhlCaANAvkzLgzKRKchPsGzFn4hDZYOoJF_M/edit?usp=sharing

+0

: 당신은 지역에 따라, 당신은 대신이 공식을 사용 할 수 있습니다 모든 사람에 대한 사용 권한은 독자가 원본 스프레드 시트를 볼 수 있도록보기 전용으로 공유해야합니다. 명명 된 범위는 공유 스프레드 시트에 설정되어 있지 않습니다. –

+0

귀하의 솔루션은 훌륭합니다. 귀하의 공식과 광산을 결합하여 큰 데이터 세트에서조차도 하나의 공식 셀로 원하는 결과를 얻을 수 있습니다. 그룹 이름에 공간이 있으면 우아한 해결 방법이 있습니까? 이 경우 수식이 모든 공백을 쉼표로 바꿉니다. 추가 탭에서 모든 그룹 이름에 구분 기호를 추가하는 방법으로 해결할 수 있지만별로보기 흉합니다. –

+0

그룹 이름에 공백이 있으면 & 연산자를 사용하여 구분 기호를 연결하십시오. 추가 세부 사항이 필요하면 후속 질문을 새로운 질문으로 게시하십시오. –

답변

0

:

샘플 시트는 여기 (보기 만)입니다.

다음 공식은 원하는 결과를 반환

QUERY 공백 문자에 의해 그들을 분리하는 행의 값을 연결

=ArrayFormula(substitute(transpose(trim(query(transpose(H3:O8);"select *";ROWS(A:A))));" ";",")) 

설명. 위의 수식은이 기능을 사용하여 지금까지 OP에서 얻은 결과를 연결 한 다음 TRIM을 사용하여 여분의 공백을 제거하고 나머지 공백을 쉼표로 바꾸는 SUBSTITUTE를 사용합니다.

루벤의 솔루션에 추가
+0

예상대로 작동합니다. 정말 고마워요! 마지막으로 수식은 다음과 같습니다 : '= ArrayFormula (transpose (trim (query) (Transform (ArrayFormula (IFL)); "선택 *", ROWS (클라이언트)))))))))) –

1

, 또한

=arrayformula(regexreplace({ unique(A3:A), trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A), B3:B & ",",), "select *", 50000))) }, ",$", "")) 

참고하십시오 : 편집과 구글 시트 스프레드 시트를 공유하는 대신

=arrayformula(regexreplace({ unique(A3:A)\ trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A); B3:B & ",";); "select *"; 50000))) }; ",$"; "")) 
+1

고맙습니다 JPV! 귀하의 수식이 나에게 좋은 보고서를 제공하지만 내 상황에서 이름 열은 일정하며 그룹 열만 터치 할 수 있습니다. 어려운 경우 ARRAYFORMULA의 고급 사용법에 대한 지침을 어디에서 얻을 수 있습니까? 내 문제에 대한 해결책을 찾았지만 여전히 ARRAYFORMULA 내에서 ROWS 또는 LEN 함수를 사용하여 내 마음을 감쌀 수 없습니다. –