[英]Excel, convert data in one column to multiple columns
如圖所示,我在一列中有 5 組2
。
我希望每組都在自己的列中。
有沒有辦法做到這一點?
我嘗試將文本添加到列中,但沒有奏效。
通用解決方案
想象一下,我有一個從單元格B2開始的垂直數組,我想將其分成N 個堆疊的列。 我將從單元格E4 中放置這些列,如圖所示。
實現我想要的代碼是:
+OFFSET($B$2,(ROW()-ROW($E$4))*N+(COLUMN()-COLUMN($E$4)),0)
將N替換為您想要的數字(以及在本例中使用您的特定值 B2 和 E4 的源和目標單元格),並垂直和水平擴展公式以形成您想要的N列矩陣。 對於 N=3 的情況,您會得到:
(PS:如果您的數組是水平的,請使用轉置轉換為垂直。然后您可以對結果矩陣進行轉置,以獲得最終結果。)
解釋
邏輯很簡單。 函數OFFSET
具有三個強制輸入。 第一個是您要轉換的數組的第一個點(在上面的示例中, $B$2
。您選擇的點的索引為 0,下一個索引為 1 等。所以,您想要的是將這些有序索引放入矩陣形式,如下所示(對於N=3的情況):
移動這些索引的規則在OFFSET
函數的第二個條目中給出。 這基本上是一個公式,它使用一些固定值(放置結果的第一個單元格的行數和列數, ROW($E$4)
和COLUMN($E$4)
,分別等於 4 和 5),以及放置數字的單元格的變量值( ROW()
和COLUMN()
)。 該公式計算實際行號和參考行號之間的差異,按 N 縮放,並添加實際和參考列之間的任何差異。 該公式為我們所需的輸出矩陣提供了所需的系列 0、1、2、3...。
最后, OFFSET
的最后一項為零,因為我們是用垂直列的數據進行變換,所以不需要水平偏移。
取總單元格,將其分成 3 個並剪切和粘貼。 我浪費了 30 分鍾嘗試所有提供的解決方案。
我放棄了,現在我的項目完成了。 只用了大約 15 秒。
要將一列按列一階拆分為多列,換句話說,無需轉置,我們可以修改公式,如https://www.extendoffice.com/documents/excel/3132-excel-convert-vector-to -matrix.html ,是row first order的解決方案,即用transpose,交換ROW()和COLUMN()的角色,示例代碼:
=OFFSET($A$1:$A$10494,ROW()-ROW($B$1)+((COLUMN()-COLUMN($B$1))*(ROWS($A$1:$A$10494)/18)),0,1,1)
這里 $a1:$a$10494 是源,$b$1 是目標,18 是要拆分的列數。 例如,這可用於獲取 pdb 中 %debug 打印輸出的表結構,這會將輸出拆分為窄帶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.