如何在Mac Excel上將行資料批次轉換為列(轉置不適合)?

如何在Mac Excel上將行資料批次轉換為列(轉置不適合)?

我有很多類似這樣的數據。它有兩列:

但我需要它看起來像這樣。每行一個名稱,並根據需要將電子郵件新增為額外欄位。每個姓名的電子郵件數量未知:

我必須對一個包含數千行的巨大電子表格執行此操作。所以我無法使用轉置之類的方法手動轉換它們。我需要批量/批量/自動化解決方案。

我知道VBA是存在的,但我不知道如何寫它。如果這是解決方案,您能給我一些關於程式碼應該是什麼樣子的指導嗎?

非 VBA 解決方案也非常受歡迎。

答案1

使用磨坊主並從此 CSV 開始:

Name,Email
bob,[email protected]
bob,[email protected]
bob,[email protected]
sally,[email protected]
sally,[email protected]

你可以運行:

mlr --csv nest --ivar ";" -f Email then nest --explode --values --across-fields -f Email then unsparsify input.csv >output.csv

獲得:

答案2

從您的範例開始,A 列:姓名,B 列:電子郵件

  1. 輸入此陣列公式: =INDEX($A$2:$A$6, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) 到空白儲存格,例如 D2,然後同時按 Shift + Ctrl + Enter 鍵即可得到正確的結果,請參閱螢幕截圖:

在此輸入影像描述

  1. 向下拖曳儲存格以填滿 D 列中的所有值。
  2. 細胞內E2在您希望電子郵件的位置插入此公式=IFERROR(INDEX($B$2:$B$16, MATCH(0,COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2,1,0),0)),"")
  3. 將儲存格向右拖曳 5-10 個儲存格(或您認為足夠的量)進行填寫,然後向下拖曳該行以填寫每個人的電子郵件。

結果: 在此輸入影像描述


來源

答案3

新增帶有公式的輔助列:

="Mail "&COUNTIF($A$2:A2,A2)

在此輸入影像描述

開啟 Power Query 編輯器 - 選擇第1欄- 去轉換-樞軸柱- 選擇電子郵件及以下進階選項選擇不要聚合:

在此輸入影像描述

答案4

如果您有新的Excel版本,您可以使用這些公式。

然後你可以這樣做: 在此輸入影像描述 藍色表格被命名為 Table1

使用的公式:

  • E3:=UNIQUE(Table1[Name])
  • F2:N2:="Mail"&COLUMN()-COLUMN($E$2)
  • F3(向下伸展):=INDEX(Table1[Mail];FILTER(TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))));TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))))>0;""))

表格由新Excel版本的SPILL函數填入。

範例檔:https://1drv.ms/x/s!ArVkYVSHnABFiiqzBYLPmoubvdHY?e=p7wOeF

如果您使用的是較舊的 Excel 版本,則可以使用陣列函數來模擬大多數功能。但它變得更加混亂......

相關內容