
나는 다음과 같은 데이터를 가지고 있습니다
patient-id last name first name date of birth value date of measurement
A1 A BC 1900-01-01 1 1900-01-03 0:00
A1 A BC 1900-01-01 2 1900-01-04 0:00
A1 A BC 1900-01-01 3 1900-01-03 0:00
A1 A BC 1900-01-01 2 1900-01-02 0:00
A1 A BC 1900-01-01 1 1900-01-05 0:00
D5 D EF 1900-01-02 4 1900-01-04 0:00
D5 D EF 1900-01-02 5 1900-01-03 0:00
D5 D EF 1900-01-02 4 1900-01-02 0:00
F2 G HI 1900-01-03 6 1900-01-04 0:00
F2 G HI 1900-01-03 5 1900-01-01 0:00
F2 G HI 1900-01-03 6 1900-01-05 0:00
각 환자의 행은 최대 10개입니다. 환자당 단일 행으로 병합하고 싶습니다.
예를 들어 위의 데이터는 다음과 같습니다.
patient-id last name first name date of birth value1 date of measurement1 value2 date of measurement2 value3 date of measurement3 value4 date of measurement4 value5 date of measurement5 value6 date of measurement6 value7 date of measurement7 value8 date of measurement8 value9 date of measurement9 value10 date of measurement10
A1 A BC 1900-01-01 1 1900-01-03 0:00 2 1900-01-04 0:00 3 1900-01-03 0:00 2 1900-01-02 0:00 1 1900-01-05 0:00
D5 D EF 1900-01-02 4 1900-01-04 0:00 5 1900-01-03 0:00 4 1900-01-02 0:00
F2 G HI 1900-01-03 6 1900-01-04 0:00 5 1900-01-01 0:00 6 1900-01-05 0:00
누군가 이 작업을 수행하는 방법을 알고 있습니까?
답변1
답변2
피벗 테이블보다 덜 우아하고 약간 더 많은 작업이 필요한 대체 솔루션입니다.
현재 데이터가 라는 시트에 있다고 가정해 보겠습니다 Old
.
- 에서
Old
데이터가 환자 ID별로 정렬되어 있는지 확인하세요. - Máté의 솔루션과 마찬가지로 수식을 사용하여 도우미 열을 추가합니다.
=COUNTIF($A$1:A2;A2)
다음과 같은 것이 있어야 합니다.
- 새 시트 만들기(예
New
: ) - A부터 D까지의 열을 from에서
Old
to로 복사합니다.New
- 에서
New
A~D 열을 선택하고데이터 > 중복 제거 > 확인 - 이제 환자별로 고유한 라인이 있어야 합니다(아래 녹색 영역 참조).
아래 스크린샷을 사용하여 시트의 나머지 부분을 만듭니다.
- 회색 영역은 동적 헤더입니다. 오른쪽에 9번 복사/붙여넣기 하면 1부터 10까지 자동으로 업데이트됩니다.
- 흰색 영역에는 2개의 공식이 있습니다. 하나는 "값"을 가져오는 수식이고 다른 하나는 "측정 날짜"를 가져오는 수식입니다. 오른쪽에 복사/붙여넣기할 수도 있으며 자동으로 업데이트됩니다.
다음은 다음과 같습니다 SUMIFS
.
=SUMIFS(Old!$E:$E,Old!$G:$G,E$2,Old!$A:$A,$A4)
=SUMIFS(Old!$F:$F,Old!$G:$G,F$2,Old!$A:$A,$A4)
메모:이는 숫자 값에서만 작동합니다. 각 측정값과 환자마다 고유한 비숫자 값의 경우 유일한 해결책은 VBA 매크로라고 생각합니다.