跳到主要內容

如何在Excel中將矩陣轉換為矢量或單列?

您是否曾經嘗試在Excel中將單元格矩陣轉換為單個行或列? 也許可以復制一行或一列,然後將它們一個接一個地粘貼到單個矢量上,但是,如果有多個行和列,這將很耗時。 在本文中,我將討論一些有趣的方法,希望它們能對您有所幫助。

使用公式將單元格矩陣轉換為單行或單列

使用Kutools for Excel將單元格矩陣轉換為單行或單列


以下公式可以幫助您快速將矩陣轉換為單行或單列。 請執行以下操作:

將單元格矩陣轉換為單列

1。 首先,您應該為矩陣數據定義一個範圍名稱。 選擇單元格的範圍,然後在 名稱框 在編輯欄旁邊,然後按 Enter 鍵。 在這種情況下,我輸入“ Matrix”作為定義的名稱,請參見屏幕截圖:

doc將矩陣轉換為第1列

2。 然後輸入以下公式:

(1.)根據行將矩陣轉換為單列,這意味著值取自每一行,然後向下移動: = OFFSET(Matrix,TRUNC((ROW()-ROW($ G $ 1))/ COLUMNS(Matrix)),MOD(ROW()-ROW($ G $ 1),COLUMNS(Matrix)),1,1)(矩陣 是您在步驟1中定義的範圍名稱,並且 G1 是您輸入此公式的單元格)。 然後將填充手柄拖動到單元格,直到顯示0,請參見屏幕截圖:

doc將矩陣轉換為第2列

(2.)將矩陣轉換為基於列的單列,這意味著值是從列中獲取的,向下移動一列然後跨到右列: = OFFSET(矩陣,MOD(ROW()-ROW($ G $ 1),ROWS(矩陣)),TRUNC((ROW()-ROW($ G $ 1))/ ROWS(Matrix)),1,1) (矩陣 是您在步驟1中定義的範圍名稱,並且 G1 是您輸入此公式的單元格)。 然後將填充手柄拖動到單元格,直到顯示0,請參見屏幕截圖:

doc將矩陣轉換為第3列

將單元格矩陣轉換為單行

要將單元格矩陣轉換為單行,可以使用以下公式:

(1.)根據行將矩陣轉換為單行,這意味著值是從每一行的左到右從每一行獲取的,然後向下移動到下一行: = OFFSET(Matrix,TRUNC((COLUMN()-COLUMN($ A $ 7))/ COLUMNS(Matrix)),MOD((COLUMN()-COLUMN($ A $ 7)),COLUMNS(Matrix)),1,1 ) (矩陣 是您為數據范圍創建的範圍名稱,並且 A7 是您輸入此公式的單元格)。 然後將填充手柄向右拖動到單元格,直到顯示0,請參見屏幕截圖:

doc將矩陣轉換為第4列

(2.)將矩陣轉換為基於列的單行,這意味著從每一列獲取值,向下移動一列然後跨到右列: = OFFSET(Matrix,MOD((COLUMN()-COLUMN($ A $ 7)),ROWS(Matrix)),TRUNC((COLUMN()-COLUMN($ A $ 7))/(ROWS(Matrix))),1,1 ,XNUMX) (矩陣 是您為數據范圍創建的範圍名稱,並且 A7 是您輸入此公式的單元格)。 然後將填充手柄向右拖動到單元格,直到顯示0,請參見屏幕截圖:

doc將矩陣轉換為第5列


如果上述公式太長而無法記住,在這裡,我可以推荐一個簡單而強大的工具- Excel的Kutools,其 變換範圍 實用程序,您可以根據需要快速將多個列和行轉換為單個列或行。

Excel的Kutools : 帶有300多個便捷的Excel加載項,可以在30天內免費試用.

安裝後 Excel的Kutools,請執行以下步驟:

1。 選擇要轉換的單元格矩陣。

2。 然後點擊 庫工具 > 範圍 > 變換範圍,請參見屏幕截圖:

3。 在 變換範圍 對話框中選擇 範圍到單列 如果要將矩陣轉換為單列,或選擇 範圍到單行 如果要將矩陣轉換為單行,請參見屏幕截圖:

doc將矩陣轉換為第07列

4。 然後點擊 OK 按鈕,然後彈出 變換範圍 框,選擇要放置結果的單元格,請參見屏幕截圖:

doc將矩陣轉換為第08列

5。 然後點擊 OK 按鈕,您選擇的單元格矩陣已轉換為單個行或列。

要了解有關此“變換範圍”實用程序的更多信息。

 立即下載和免費試用Excel的Kutools!


Excel的Kutools:具有300多個方便的Excel加載項,可以在30天內免費試用,沒有任何限制。 立即下載並免費試用!

最佳辦公生產力工具

熱門特色: 尋找、突出顯示或識別重複項   |  刪除空白行   |  合併列或儲存格而不遺失數據   |   沒有公式的回合 ...
超級查詢: 多條件VLookup    多值VLookup  |   跨多個工作表的 VLookup   |   模糊查詢 ....
高級下拉列表: 快速建立下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
欄目經理: 新增特定數量的列  |  移動列  |  切換隱藏列的可見性狀態  |  比較範圍和列 ...
特色功能: 網格焦點   |  設計圖   |   大方程式酒吧    工作簿和工作表管理器   |  資源庫 (自動文字)   |  日期選擇器   |  合併工作表   |  加密/解密單元格    按清單發送電子郵件   |  超級濾鏡   |   特殊過濾器 (過濾粗體/斜體/刪除線...)...
前 15 個工具集12 文本 工具 (添加文本, 刪除字符,...)   |   50+ 圖表 類型 (甘特圖,...)   |   40+ 實用 公式 (根據生日計算年齡,...)   |   19 插入 工具 (插入二維碼, 從路徑插入圖片,...)   |   12 轉化 工具 (數字到單詞, 貨幣兌換,...)   |   7 合併與拆分 工具 (高級合併行, 分裂細胞,...)   |   ... 和更多

使用 Kutools for Excel 增強您的 Excel 技能,體驗前所未有的效率。 Kutools for Excel 提供了 300 多種進階功能來提高生產力並節省時間。  點擊此處獲取您最需要的功能...

kte選項卡201905


Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
Comments (7)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thanks much! Stacking a 2D matrix of data as a 1D column -> That was cool! Solved my problem precisely. Though I had to tweak the formula to get it right (I think the row and col are interchanged)... But the inspiration was from this article. Simply superb! Thanks!
This comment was minimized by the moderator on the site
Fantastic explanation - thank you. This helped me save hours of time
This comment was minimized by the moderator on the site
I'd like to accomplish this same task but with a range that is not so neatly defined. I've got wholes in the data and my matrix is spaced out over my spreadsheet rather than in a neatly define A1:D4 style block. Any ideas on how I can accomplish this?
This comment was minimized by the moderator on the site
Hi, Kevin:

The following VBA code can help you to combine the cells from a range:

Sub a()
Dim xSRg As Range
Dim xDRg As Range
Dim I As Long
Dim J As Long
Dim K As Long
Dim xArr
On Error Resume Next
Set xSRg = Application.InputBox("Please select the data range:", "KuTools for Excel", Selection.Address, , , , , 8)
If xSRg Is Nothing Then Exit Sub
Set xDRg = Application.InputBox("Select an output cell:)", "KuTools for Excel", , , , , , 8)
If xDRg Is Nothing Then Exit Sub
xArr = xSRg
K = 0
For I = 1 To UBound(xArr, 1)
For J = 1 To UBound(xArr, 2)
If xArr(I, J) <> "" Then
xDRg.Offset(K, 0).Value = xArr(I, J)
K = K + 1
End If
Next
Next
End Sub

Please try it, Hope it can help you!
This comment was minimized by the moderator on the site
Thank you!!!!
This comment was minimized by the moderator on the site
I had the same issue, put a filter on that column, and anything that has 0, filter out.
This comment was minimized by the moderator on the site
This is so useful! The formula to convert a matrix to single column based on column was exactly what I needed. Thank you!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations