단일 참조 번호와 관련된 여러 연령층의 사람들을 뽑아서 표시하려고 합니다.
아래에 잘라낸 시트 설정이 표시됩니다. 시트에는 대략 2500개의 행이 있습니다.
App ref,Relationship,Age,Date of Birth,Gender,Marital Status
1,A1,34,12-Apr-85,F,SINGLE
1,A1,34,12-Apr-85,F,SINGLE
1,PT,30,12-Oct-89,M,SINGLE
830,A1,63,10-Nov-56,F,MARRIED
830,SN,32,11-Nov-87,M,SINGLE
830,HU,65,24-Sep-54,M,MARRIED
846,A1,75,11-Aug-44,M,MARRIED
846,A2,72,16-Nov-47,F,MARRIED
각각에 대해 App Ref
관련된 모든 연령을 추출하고 싶습니다.
| App ref | Age 1 | Age 2 | Age 3 |
|---------|-------|-------|-------|
| 1 | 34 | 34 | 30 |
| 830 | 63 | 32 | 65 |
| 846 | 75 | 72 | - |
답변1
- 대상 데이터가 시작될 미사용 열에 A 열을 복사하고 데이터, 중복 제거를 사용하여 고유한 집합을 생성합니다.앱 참조숫자. 아래 샘플 이미지에서는 H열을 사용했습니다.
이 수식을 고유 항목 바로 오른쪽에 있는 1행 셀에 입력하세요.앱 참조숫자를 클릭하고 오른쪽으로 드래그하세요. 내 샘플에서는 I1에서 시작했습니다.
=TEXT(COLUMN(A:A), "\A\g\e 0")
이 공식을 아래에 넣어보세요1세오른쪽 아래로 드래그하세요. 내 샘플에서는 I2에서 시작했습니다.
=IFERROR(INDEX($C:$C, AGGREGATE(15, 7, ROW($C$2:INDEX($C:$C, MATCH(1E+99, $C:$C)))/($A$2:INDEX($A:$A, MATCH(1E+99, $C:$C))=$H2), COLUMN(A:A))), "")
만약앱 참조열이 오름차순으로 정렬되면 조회 행을 제한하여 계산을 줄일 수 있습니다.
=IFERROR(INDEX($C:$C, AGGREGATE(15, 7, ROW(INDEX($A:$A, MATCH($H2, $A:$A, 0)):INDEX($A:$A, MATCH($H2, $A:$A))), COLUMN(A:A))), "")
답변2
당신은 이것을 쉽게 할 수 있습니다Power Query
Excel 2010+에는 Microsoft의 무료 추가 기능이 있습니다. Get & Transform
Excel 2016+에 포함됨
사용자 정의 열 수식 입력을 제외한 모든 작업은 GUI에서 수행할 수 있으며, 원본 데이터가 변경되면 쿼리가 쉽게 새로 고쳐집니다.
- 원본 테이블에서 셀을 선택하세요.
Data--> Get & Transform --> from Table/Range
- 그룹화 기준
App ref
작업 == 모든 행
- 사용자 정의 열 추가(열
Age
을List
- 공식
=Table.Column([Merged],"Age")
- 공식
comma
이 새로운 사용자 정의 열의 이중 화살표를 마우스 오른쪽 버튼으로 클릭하고 구분 기호로 사용하여 값 추출을 선택합니다.comma
구분 기호로 사용하여 열을 분할합니다 .- 새 열의 이름을
Age n
등 으로 바꿉니다. - 결과를 닫고 로드합니다.
M-코드
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"App ref", Int64.Type}, {"Relationship", type text}, {"Age", Int64.Type}, {"Date of Birth", type datetime}, {"Gender", type text}, {"Marital Status", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"App ref"}, {{"Merged", each _, type table [App ref=number, Relationship=text, Age=number, Date of Birth=datetime, Gender=text, Marital Status=text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Merged],"Age")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Custom.1", "Custom.2", "Custom.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Custom.1", Int64.Type}, {"Custom.2", Int64.Type}, {"Custom.3", Int64.Type}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Custom.1", "Age 1"}, {"Custom.2", "Age 2"}, {"Custom.3", "Age 3"}})
in
#"Renamed Columns"