첨부된 이미지와 샘플 데이터를 참고하여 여러 행의 날짜, 사람, 메모를 결합된 값 집합별로 줄 바꿈을 사용하여 1행으로 결합하고 싶습니다. 각 메모는 이름과 ID가 비어 있는 행을 차지하므로 값이 있는 기본 행 아래의 모든 행을 결합해야 합니다. 데이터 및 원하는 출력은 첨부된 이미지를 참조하세요.
샘플 데이터:
+-------+--------------+------------------+---------+-----------------------+
| Name | ID | Date | Person | Notes |
+-------+--------------+------------------+---------+-----------------------+
| Danny | UID11224512 | 11/5/2019 | Joe | <p>Note for Danny</p> |
| | | 11/5/2019 | John | <p>Note 2</p> |
| Joe | UID11224956 | 11/5/2019 18:54 | Someone | <p>Note 1</p> |
| | | 11/5/2019 18:54 | Someone | <p>Note 2</p> |
| Jane | UID11224959 | 11/5/2019 18:54 | Danny | <p>Note 1 </p> |
| | | 11/5/2019 17:33 | Shawn | <p>Note 3</p> |
| | | 11/6/2019 18:54 | Jane | <p>Note 2</p> |
| Tom | UID115466652 | | | |
| Eric | UID168998955 | | | |
| Paula | UID166559885 | | | |
| Frank | UID112249569 | 11/5/2019 18:54 | Someone | <p>Note 1</p> |
| | | 11/6/2019 18:54 | Someone | <p>Note 2</p> |
| | | 11/7/2019 18:54 | Someone | <p>Note 3</p> |
| | | 11/8/2019 18:54 | Someone | <p>Note 4</p> |
| | | 11/9/2019 18:54 | Someone | <p>Note 5</p> |
| | | 11/10/2019 18:54 | Someone | <p>Note 6</p> |
| Paul | UID1665588 | | | |
+-------+--------------+------------------+---------+-----------------------+
원하는 출력:
+-------+--------------+-----------------------------------+
| Name | ID | Notes |
+-------+--------------+-----------------------------------+
| Danny | UID11224512 | "11/5/2019 (Joe) - Note for Danny |
| | | 11/5/2019 (John) - Note 2" |
| Joe | UID11224956 | "11/5/2019 (Someone) - Note 1 |
| | | 11/5/2019 (Someone) - Note 2" |
| Jane | UID11224959 | "11/5/2019 (Danny) - Note 1 |
| | | 11/5/2019 (Shawn) - Note 2 |
| | | 11/5/2019 (Jane) - Note 3" |
| Tom | UID115466652 | |
| Eric | UID168998955 | |
| Paula | UID166559885 | |
| Frank | UID112249569 | "11/5/2019 (Someone) - Note 1 |
| | | 11/6/2019 (Someone) - Note 2 |
| | | 11/7/2019 (Someone) - Note 3 |
| | | 11/8/2019 (Someone) - Note 4 |
| | | 11/9/2019 (Someone) - Note 5 |
| | | 11/10/2019 (Someone) - Note 6" |
| Paul | UID1665588 | |
+-------+--------------+-----------------+---------+-----------------------------------+
답변1
이를 수행하는 한 가지 방법은 Windows Excel 2010+ 및 Office 365에서 사용할 수 있는 파워 쿼리를 사용하는 것입니다.
- 데이터 테이블에서 일부 셀을 선택하세요.
Data => Get&Transform => from Table/Range
- 파워 쿼리 UI에서:
Home => Advanced Editor
- 2행의 테이블 이름을 기록해 두세요.
- 아래 MCode를 창에 붙여넣으세요.
- 2행의 테이블 이름을 실제 테이블 이름으로 변경합니다.
- 코드와 주석을 읽고
Applied Steps
창을 검사하여 무슨 일이 일어나고 있는지 이해하세요.
간략한 알고리즘
Fill down
이름 및 ID 열의 공백Group
이름 및 ID 열 기준- 추출첫 번째날짜, 사람, 메모를 별도의 열에 표시
- 마지막 열의 모든 날짜/사람/메모(줄 바꿈으로 구분)를 결합합니다.
M코드
아래 코드에서 Line2의 테이블 이름을 실제 테이블 이름으로 변경해야 합니다.
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"ID", type text}, {"Date", type datetime}, {"Person", type text}, {"Notes", type text}}),
//Fill down to fill in the blanks for Name and ID columns
#"Filled Down" = Table.FillDown(#"Changed Type",{"Name", "ID"}),
//Group on Name and ID -- should be the same so this is a double check.
#"Grouped Rows" = Table.Group(#"Filled Down", {"Name", "ID"}, {
//For each Name/ID
//Extract first Date as a date string if it has no time component, otherwise leave it as a datetime
{"Date", each if DateTime.Time([Date]{0}) = #time(0,0,0)
then DateTime.ToText([Date]{0},"MM/dd/yy")
else [Date]{0}},
//Extract first Person
{"Person", each [Person]{0}},
//extract first Note
{"Notes.1", each [Notes]{0}},
//Extract and combine, for each note, the Date, person, and note
// Then split the combination for each entry by linefeed.
{"Notes.2", (t)=> Text.Combine(
List.Generate(() => [Count=1,
dt =DateTime.ToText(t[Date]{0},"MM/dd/yyyy") & " (" &
t[Person]{0} &
") - " & t[Notes]{0}],
each [Count] <= Table.RowCount(t),
each [Count = [Count] + 1, dt = DateTime.ToText(t[Date]{[Count]},"MM/dd/yyyy") &
" (" & t[Person]{[Count]} &
") - " & t[Notes]{[Count]}],
each [dt]),"#(lf)")
}
})
in
#"Grouped Rows"
Excel에서는 열 형식을 다음 과 Notes.2
같이 지정해야 하며 열 형식은 (Wrap Text
Date
mm/dd/yyyy hh:mm
날짜 열에서 시간이 없는 날짜는 텍스트 문자열로 반환되므로 질문에 표시된 것과 같은 형식을 갖지 않습니다.)
답변2
전체 설명 열에 대해 홈 리본에서 "텍스트 줄 바꿈"을 설정해야 합니다. 다음 공식을 사용하여 텍스트 값을 줄 바꿈과 결합합니다.
="comment1" & CHAR(10) & "Comment2"
두 개의 별도 테이블을 결합하는 경우 Excel에서 파워 쿼리를 조사해 볼 가치가 있습니다.