
我有以下數據
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 列複製
Old
到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 巨集。