簡體   English   中英

Excel,將一列數據轉換為多列

[英]Excel, convert data in one column to multiple columns

如圖所示,我在一列中有 5 組2
我希望每組都在自己的列中。
有沒有辦法做到這一點?

我嘗試將文本添加到列中,但沒有奏效。

excel圖片

通用解決方案

想象一下,我有一個從單元格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的最后一項為零,因為我們是用垂直列的數據進行變換,所以不需要水平偏移。

你可以用例如公式來做到這一點; 將此輸入到 C1 並向下和向右填充:
=OFFSET($A$1,ROW()-1+(COLUMN()-3)*6,0)

在此處輸入圖片說明

取總單元格,將其分成 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM