계층 구조 수준으로 구분된 값을 개별 할당으로 변환

계층 구조 수준으로 구분된 값을 개별 할당으로 변환

구분된 사용자 목록과 계층 구조에 할당된 수준이 있습니다. 각 사용자를 자신의 행에 두고 싶지만 원본에 할당된 수준을 유지하고 싶습니다.

이것이 내가 시작하는 것입니다:

이것이 제가 마무리하고 싶은 것입니다:

사용자 레벨 1
[이메일 보호됨] 지역 1
[이메일 보호됨] 지역 1
[이메일 보호됨] 지역 1

수백 개의 행과 여러 수준의 계층 구조가 있으므로 텍스트를 열과 c/p로 변환하는 데 시간이 너무 많이 걸립니다.

가능하다면 vba-free 솔루션을 선호합니다.

답변1

Office 365 사용:

=LET(
    us,A2:A201,
    hr,B2:D201,
    ttl,A1:D1,
    VSTACK(ttl,DROP(REDUCE("",us&"|"&BYROW(hr,LAMBDA(z,TEXTJOIN("{",FALSE,z))),LAMBDA(a,b,LET(c,TEXTAFTER(b,"|"),VSTACK(a,HSTACK(TEXTSPLIT(TEXTBEFORE(b,"|"),,";"),DROP(TEXTSPLIT(REPT(c&"}",ROWS(TEXTSPLIT(b,,";"))),"{","}"),-1)))))),1)))

기본적으로 (사용자) 범위 ;의 텍스트를 분할합니다 . 그런 다음 (계층 구조) 범위 us에서 행별로 값을 반복합니다 . hr그런 다음 수평으로 쌓습니다.

그런 다음 REDUCE는 각 행의 출력을 수직으로 쌓습니다. 마지막으로 ttl(제목) 범위를 쌓습니다 .

여기에 이미지 설명을 입력하세요

답변2

  1. 데이터 범위를 선택하고 INSERT메뉴 로 이동

여기에 이미지 설명을 입력하세요

  1. 적절하게 선택 TABLE하고 선택/선택 취소합니다 .My Table Has Headers

여기에 이미지 설명을 입력하세요

  1. 데이터 범위를 선택하고 DATA메뉴로 이동하여 클릭하세요.From Table/Range

여기에 이미지 설명을 입력하세요

  1. 에서 Power Query Editor을 선택 하고 column1을 클릭 Split Column한 후 을 클릭합니다 By Delimiter.

여기에 이미지 설명을 입력하세요

  1. ;사용자 정의 구분 기호를 입력 하고 을 클릭합니다 okay.

여기에 이미지 설명을 입력하세요

  1. Column2드롭다운을 선택한 Unpivot Columns다음 을 선택합니다 Unpivot Other Columns.

여기에 이미지 설명을 입력하세요

  1. 열을 선택합니다 Attribute.

여기에 이미지 설명을 입력하세요

  1. 열을 마우스 오른쪽 버튼으로 클릭하고 선택하십시오.Remove

여기에 이미지 설명을 입력하세요

  1. HOME메뉴 에서Close and Load

여기에 이미지 설명을 입력하세요

관련 정보