Excel 教學:合併列、行、儲存格
在日常 Excel 工作中,合併列、行或儲存格非常常見,例如將名字和姓氏(分別在兩個列)合併為一個列以獲得全名,根據相同 ID 合併行並對應值求和,或將一個區域的多個儲存格合併為單一儲存格等。本教學彙整了 Excel 中所有合併列/行/儲存格的情境,並為您提供不同的解決方案。
本教學導覽 |
1 將多個列/行合併為一個儲存格1.1 將多個列/行合併為一個儲存格,並以空格、逗號或其他分隔符分隔 1.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本) |
2. 合併具有相同 ID 的行 |
3. 合併儲存格3.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本) |
在本教學中,我會建立一些範例來說明各種方法。當您使用下方 VBA 程式碼或公式時,可以根據需要調整參照,或直接下載範例檔案來嘗試這些方法。
1 將多個列/行合併為一個儲存格
在 Excel 中,將多個列或行合併為一個儲存格,並以逗號、空格或其他分隔符分隔,如下圖所示,是最常見的操作之一。
| 將多個列合併為一個儲存格 |
![]() |
| 將多個行合併為一個儲存格 |
![]() |
在 Excel 中,連接符號 & 通常用於連接多個文字。
範例:將名字(A 列)和姓氏(B 列)合併為全名
選擇要放置合併結果的儲存格,然後輸入如下公式:
=A2&" "&B2
在此公式中,& 用於連接文字,A2 和 B2 是需要合併的兩個文字," " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用逗號作為分隔符,只需輸入用雙引號括起來的逗號 ","。
按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
範例:將編號(第15 行)和姓名(第16 行)合併到一個儲存格
如果要將多個行合併為一個儲存格,只需根據需要更改公式中的儲存格參照和分隔符,然後將自動填滿控點向右拖曳以獲得所有合併結果。
1.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)
如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函數來完成此操作。
| CONCATENATE 語法說明 |
| CONCATENATE (text1,[text2],…) |
如需有關 CONCATENATE 函數的更多詳細資訊,請參閱:CONCATENATE。
範例:將姓名(F 列)和地址(G 列)合併為一個列
選擇要放置合併結果的儲存格,然後輸入如下公式:
=CONCATENATE(F2,",",G2)
在此公式中,F2 和 G2 是需要合併的兩個文字,"," 是分隔符(逗號),用於在結果儲存格中分隔兩個文字。如果想用空格作為分隔符,只需輸入用雙引號括起來的空格 " "。
按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
若要合併多個行,只需根據需要更改儲存格參照和分隔符,然後將自動填滿控點向右拖曳即可。
1.13 使用 CONCAT 函數或 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,CONCAT 函數和 TEXTJOIN 函數會是更好的選擇。
| CONCAT 語法說明 |
| CONCAT (text1,[text2],…) |
如需有關 CONCAT 函數的更多詳細資訊,請參閱:CONCAT。
CONCAT 函數的用法與 CONCATENATE 函數相同,例如將名字和姓氏分別在兩個列中合併為一個列,公式如下:
=CONCAT(A21," ",B21)
在此公式中,A21 和 B21 是需要合併的兩個文字," " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。
按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
與合併列不同,合併行時,輸入第一個公式後,需將自動填滿控點向右拖曳,直到所有合併結果都產生為止。
| TEXTJOIN 語法說明 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN。
使用 TEXTJOIN 合併列或行:
=TEXTJOIN(",",TRUE,E21:G21))
在此公式中,E21:G21 是需要合併的連續區域。" " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。
按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
| 忽略空白 |
![]() |
| 包含空白 |
![]() |
1. 使用記事本也可以實現合併列(不適用於合併行)。
選取要合併為一列的區域,按下 Ctrl + C 鍵複製該區域。
2. 開啟記事本,按下 Ctrl + V 貼上複製的區域。
3. 在記事本中選取兩個文字間的 Tab 鍵,然後按下 Ctrl + H 啟用 「替換」 功能,這時 「尋找內容」 文字框中已自動填入 Tab 符號。
4. 在「替換為」文字框中輸入您想用來分隔合併文字的分隔符,然後點擊「全部替換」。接著關閉「替換」對話框。
5. 現在選取記事本中的文字,然後按下 Ctrl + C 來複製,然後回到 Excel,選取一個儲存格並按下 Ctrl + V 即可貼上合併後的結果。

如果您想將多個列或行合併為一個儲存格,並以換行符分隔,如下圖所示:
首先,您需要知道,在 Excel 中,CHAR() 函數可用於指定在公式中難以輸入的字元,例如 CHAR(10)會產生換行符。
然後將 CHAR(10) 應用於上述公式中,即可用換行符作為分隔符合併列或行:
連接符號:
=A49&CHAR(10)&B49
CONCATENATE 函數:
=CONCATENATE(A49,CHAR(10),B49)
CONCAT 函數
=CONCAT(A49,CHAR(10),B49)
TEXTJOIN 函數
=TEXTJOIN(CHAR(10),TRUE,A49:B49)
輸入上述公式後,選取結果,然後點擊「常用」>「自動換行」。
現在,這些列已合併為一個儲存格,並以換行符分隔。
如果只想將一列中的多行合併為單一儲存格,Excel 的「兩端對齊」功能可以幫助您。選取包含多行的列,點擊「常用」>「填滿」>「兩端對齊」,這些行就會合併到區域的頂端儲存格,並以空格分隔。
![]() | ![]() |
本節將介紹如何將多個列或行合併為一個儲存格,並跳過空白儲存格,如下圖所示:
1.21 使用 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,幸運的是,新的 TEXTJOIN 函數可以輕鬆完成這項工作。
| CONCATENATE 語法說明 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN。
範例:將姓名(A 列)、編號(B 列)和網域(C 列)合併為一個儲存格以產生電子郵件地址,其中部分編號可能為空白。
選擇用於放置合併結果的儲存格,輸入如下公式:
=TEXTJOIN("",TRUE,A2:C2)
在此公式中,A2:C2 是包含要合併文字的區域,"" 是分隔符(無),用於分隔結果儲存格中的文字。如果想用分隔符分隔,只需輸入用雙引號括起來的分隔符,例如 ","。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。
按下 Enter 鍵取得第一個結果,然後根據需要將自動填滿控點向下或向右拖曳以產生所有結果。
如果您使用的是 Excel2016 或更早版本,請使用連接符號 &逐一連接文字,並手動跳過空白。
選擇要放置合併結果的儲存格,然後輸入如下公式:
=A10&C10
在此公式中,& 用於連接文字,A10 和 C10 是需要合併的兩個文字。如果想用逗號作為分隔符,只需輸入用雙引號括起來的逗號 ",",並用 &連接兩個文字。
按下 Enter 鍵取得合併結果。然後更改公式中的參照以取得下一個合併結果。
對於 Excel2016及更早版本的使用者,如果有多個列或行需要合併且要跳過空白,可以使用 VBA 建立自訂函數來快速解決這個問題。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗。
2. 點擊「插入」>「模組」以插入新模組。
3. 將下方程式碼複製並貼到新模組中,然後儲存。
VBA:合併儲存格並跳過空白
Function Concatenatecells(ConcatArea As Range) As String 'updateby Extendoffice For Each n In ConcatArea: nn = IIf(n = "", nn & "", nn & n & "_"): Next Concatenatecells = Left(nn, Len(nn) - 1) End Function
4. 回到工作表,選擇要放置合併結果的儲存格,輸入公式
=Concatenatecells(A15:C15)
在此公式中,A15:C15 是包含要合併文字的區域。在 VBA 程式碼中,"_" 表示用於分隔合併結果中文字的分隔符,您可以根據需要更改分隔符。
如果您已在 Excel 中安裝 Kutools for Excel,「合併行/列/儲存格並保留值」功能能夠大幅提升各種合併工作的效率。
1. 選取要合併的儲存格及放置合併結果的儲存格。
2. 點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
3. 在彈出的對話框中,根據下列步驟指定選項:
1) 指定要合併列、合併行,或將所有儲存格合併為一個。
| 合併列 範例。 | 合併行 範例。 | 合併到單一儲存格 範例。 |
![]() | ![]() | ![]() |
2) 指定合併結果中文字的分隔符。
3) 指定合併結果的位置(選擇「合併到單一儲存格」時此選項會停用)
選擇「合併列」時,可以指定將結果放在所選區域的左側儲存格或右側儲存格。
| 左側儲存格 範例。 | 右側儲存格 範例。 |
![]() | ![]() |
選擇「合併行」時,可以指定將結果放在所選區域的頂端儲存格或底部儲存格。
| 頂端儲存格 範例。 | 底部儲存格 範例。 |
![]() | ![]() |
4) 指定合併結果的操作方式。
4. 點擊「確定」或「應用」以完成合併。
| 保留這些儲存格的內容 |
![]() |
| 刪除這些儲存格的內容 |
![]() |
| 合併這些儲存格 |
![]() |
如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
有時,您可能希望在合併兩個列時,若其中一個列有空白儲存格,則用另一個列的內容填補。例如,A 列包含使用者名稱及部分空白,B 列包含姓名,合併時只需將 A 列的空白儲存格用 B 列對應內容填滿,如下圖所示:
IF 函數可用於測試特定條件。在此,您可以用 IF 函數測試儲存格是否為空,若為空則用另一個列的內容填補。
| IF 函數語法說明 |
| IF (logical_test, [value_if_true], [value_if_false]) |
如需有關 IF 函數的更多詳細資訊,請參閱:IF
選擇要放置合併結果的頂端儲存格,並複製或輸入下列公式:
=IF(A2="",B2,A2)
然後按下 Enter 鍵取得第一個結果,並拖曳自動填滿控點向下填充以獲得所有結果。
現在,只有 A 列的空白儲存格已用 B 列的內容填滿。
這裡也提供一段 VBA 程式碼可以處理此需求。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 將下方程式碼複製並貼到新模組中。
VBA:若有空白則合併兩個列
Sub MergebyBlank() 'UpdatebyExtendoffice20220506 Dim xRg1, xRg2, xRgUser As Range Dim xRg As Range Dim xWsh As Worksheet Dim xCount, xFNum As Integer Set xRg1 = Range("A:A") Set xRg2 = Range("B:B") Set xWsh = xRg1.Worksheet Set xRgUser = xWsh.UsedRange Set xRg1 = Intersect(xRgUser, xRg1) Set xWsh = xRg2.Worksheet Set xRgUser = xWsh.UsedRange Set xRg2 = Intersect(xRgUser, xRg2) xCount = xRg1.Count If (xCount > xRg2.Count) Then xCount = xRg2.Count End If For xFNum = 1 To xCount If (xRg1.Item(xFNum).Value = "") Then If (xRg2.Item(xFNum).Value <> "") Then xRg1.Item(xFNum).Value = xRg2.Item(xFNum).Value End If ElseIf (xRg2.Item(xFNum).Value = "") Then If (xRg1.Item(xFNum).Value <> "") Then xRg2.Item(xFNum).Value = xRg1.Item(xFNum).Value End If End If Next End Sub 
在程式碼中,A:A 和 B:B 是將要合併的兩個列,您可根據需要進行修改。
3. 然後按下 F5 鍵或點擊 執行
按鈕,則若 A 列為空,會自動用 B 列的值填入。
2 合併具有相同 ID 的行
假設有一個包含多個列的表格,其中一個列包含有重複項的 ID 值。本教學將介紹如何根據相同 ID 合併表格中的行並進行計算。
本節將介紹如何合併具有相同 ID 的行,並以逗號分隔,如下圖所示:
這裡提供一段 VBA 程式碼可以處理此需求
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 將下方程式碼複製並貼到新模組中。
VBA:合併具有相同 ID 的行
Sub Combine_Rows() 'UpdatebyExtendoffice20220506 Dim xRg As Range Dim xRows As Long Dim I As Long, J As Long, K As Long On Error Resume Next Set xRg = Application.InputBox("Select Range:", "Kutools For Excel", Selection.Address, , , , , 8) Set xRg = Range(Intersect(xRg, ActiveSheet.UsedRange).Address) If xRg Is Nothing Then Exit Sub xRows = xRg.Rows.Count For I = xRows To 2 Step -1 For J = 1 To I - 1 If xRg(I, 1).Value = xRg(J, 1).Value And J <> I Then For K = 2 To xRg.Columns.Count If xRg(J, K).Value <> "" Then If xRg(I, K).Value = "" Then xRg(I, K) = xRg(J, K).Text Else xRg(I, K) = xRg(I, K).Text & "," & xRg(J, K).Text 'here uses comma as separator, you can change it to others as you need End If End If Next xRg(J, 1).EntireRow.Delete I = I - 1 J = J - 1 End If Next Next ActiveSheet.UsedRange.Columns.AutoFit End Sub
3. 然後按下 F5 鍵或點擊 執行
按鈕,這時會跳出 Kutools for Excel 對話框,讓您選取需要合併相同 ID 行的表格。
4. 點擊「確定」。現在所選表格已根據相同 ID 合併行。
如果只有兩個列,並且您想將具有相同 ID 的行合併,並用逗號分隔另一個列的值,如下圖所示,可以使用 IF 函數來實現。
1. 將 ID由 A 到 Z 排序。選取 ID 列,點擊「資料」>「排序 A 到 Z」。
2. 在「排序警告」對話框中,勾選「展開選取範圍」選項,點擊「排序」。
現在,相同的 ID 已經被排序在一起。
3. 在相鄰列中,使用如下 IF 函數:
=IF(A17=A18,C17&", "&B18,B18)
在此公式中,A17 和 A18 是 ID 列中的兩個相鄰儲存格(A17 為 ID 列標題),B18 為 A18 對應的儲存格。", " 表示用逗號分隔值。您可根據需要更改參照和分隔符。
4. 按下 Enter 鍵取得第一個結果,然後拖曳自動填滿控點向下填充以獲得所有結果。
5. 到相鄰列,輸入如下公式:
=IF(A18<>A19,"Merged","")
在此公式中,A18 和 A19 是 ID 列中的兩個相鄰儲存格,若兩者不相等則回傳「Merged」,否則回傳空白。
6. 按下 Enter 鍵取得第一個結果,然後拖曳自動填滿控點向下填充以獲得所有結果。
7. 選取最後一個公式列(含標題),點擊「資料」>「篩選」。
8. 點擊篩選按鈕,在下拉選單中勾選「Merged」核取方塊,點擊「確定」。
現在只篩選出已合併的行,複製這些資料並貼到其他位置。
如需更多 IF 函數的詳細說明,請參閱:IF。
如果您已在 Excel 中安裝 Kutools for Excel,「高級合併行」功能可以輕鬆完成此工作。
1. 選取表格,然後點擊 Kutools > 合併與分割 > 高級合併行。
2. 在「高級合併行」對話框中,請依下列步驟操作:
1) 選擇 ID 列,並設為主鍵;
2) 選擇要合併值的列,點擊「合併」並選擇分隔符。
3)點擊「確定」。
現在,這些行已根據相同 ID 合併。
高級合併行功能會破壞原始資料,請在使用前先備份資料。
如需有關此功能的更多詳細資訊,請參閱高級合併行。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
如果您想將具有相同 ID 的行合併,然後對值進行求和或其他計算,如下圖所示,以下方法可以協助您。
如果只有兩個列,一個列包含文字(ID),另一個列包含需要計算的值(如求和),Excel內建的「合併計算」功能可以協助您。
1. 選擇要放置合併結果的儲存格,然後點擊「資料」>「合併計算」。
2. 在「合併計算」對話框中,請依下列步驟操作:
1) 根據需要選擇函數;
2) 點擊箭頭選取表格;
3) 點擊「新增」將所選區域添加到「所有參照」清單;
4) 勾選「首行」和「最左列」核取方塊;
5) 點擊「確定」。
現在,表格已根據相同 ID進行求和。
這裡也提供一段 VBA,可以合併具有相同 ID 的行並進行求和。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 在新模組中,將下方 VBA 程式碼複製並貼上。
VBA:合併重複行並求和
Sub CombineRows()
'Updateby Extendoffice
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub3. 然後按下 F5 鍵或點擊 執行
按鈕,會跳出對話框讓您選取要使用的表格,然後點擊 確定.
現在,所選區域已根據相同值合併並求和。
VBA會破壞原始資料,請在使用前先備份資料。
如果表格中有兩個以上的列需要合併並進行計算,例如有三個列,第一個列包含需合併的重複產品名稱,第二個列包含需合併並以逗號分隔的商店名稱,最後一個列包含需根據重複行求和的數字,如下圖所示,Kutools for Excel 的「高級合併行」功能可以協助您。
1. 選取表格,然後點擊 Kutools > 合併與分割 > 高級合併行。
2. 在「高級合併行」對話框中,請依下列步驟操作:
1) 選擇 ID 列,並設為主鍵;
2) 選擇要合併值的列,點擊「合併」並選擇分隔符。
3) 選擇要進行計算的列,點擊「計算」並選擇一種計算方式。
4)點擊「確定」。
現在,這些行已根據相同行合併並完成計算。
高級合併行功能會破壞原始資料,請在使用前先備份資料。
如需有關此功能的更多詳細資訊,請參閱高級合併行。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
如果有一個包含多個列的表格,其中一個列包含一些重複值,現在需要將該列中相鄰且值相同的行合併,如下圖所示。該如何操作?
在 Excel 中,沒有內建功能可以直接解決此需求,但這裡提供一段 VBA 可以處理。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 在新模組中,將下方 VBA 程式碼複製並貼上。
VBA:合併相鄰且值相同的行
Sub MergeSameCell()
'Updateby Extendoffice
Dim Rng As Range, xCell As Range
Dim xRows As Integer
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRows = WorkRng.Rows.Count
For Each Rng In WorkRng.Columns
For i = 1 To xRows - 1
For j = i + 1 To xRows
If Rng.Cells(i, 1).Value <> Rng.Cells(j, 1).Value Then
Exit For
End If
Next
WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge
i = j - 1
Next
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

3. 然後按下 F5 鍵或點擊 執行
按鈕以啟用 VBA,然後會跳出對話框讓您選取要使用的表格,接著點擊 確定.
現在,第一個列中相鄰且值相同的行已在所選區域合併。
VBA會破壞原始資料,請在使用前先備份資料。此 VBA會合併所選表格第一個列中相同的值。
如果您已在 Excel 中安裝 Kutools for Excel,其「合併相同儲存格」功能可一步完成此工作。
選取要合併相同值的列,然後點擊 Kutools > 合併與分割 > 合併相同儲存格。
現在,相鄰且值相同的儲存格已被合併。
如果您想取消合併儲存格並還原內容,可以使用 取消合併儲存格並填充值 功能。

如需有關此功能的更多詳細資訊,請參閱合併相同儲存格。
如需有關此功能的更多詳細資訊,請參閱取消合併儲存格。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
3 合併儲存格
若要將多行多列的區域合併為單一儲存格,這裡提供四種方法。
範例:合併區域 A1:C3 
在 Excel 中,連接符號 & 通常用於連接多個文字。
選擇要放置合併結果的儲存格,然後輸入如下公式:
=A1&", "&B1&", "&C1&", "&A2&", " &B2&", "&C2&", "&A3&", "&B3&", "&C3
在此公式中,& 用於連接文字,", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。
按下 Enter 鍵取得合併結果。
3.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)
如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函數來完成此操作。
| CONCATENATE 語法說明 |
| CONCATENATE (text1,[text2],…) |
如需有關 CONCATENATE 函數的更多詳細資訊,請參閱:CONCATENATE
選擇要放置合併結果的儲存格,然後輸入如下公式:
=CONCATENATE(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
在此公式中,A1、B1…、C3 是您要合併的文字。", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。
然後按下 Enter 鍵取得合併結果。
3.13 使用 CONCAT 函數或 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,CONCAT 函數和 TEXTJOIN 函數會是更好的選擇。
| CONCAT 語法說明 |
| CONCAT (text1,[text2],…) |
如需有關 CONCAT 函數的更多詳細資訊,請參閱:CONCAT。
CONCAT 函數的用法與 CONCATENATE 函數相同,例如將名字和姓氏分別在兩個列中合併為一個列,公式如下:
=CONCAT(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
在此公式中,A1、B1…、C3 是您要合併的文字。", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。
然後按下 Enter 鍵取得合併結果。
| TEXTJOIN 語法說明 |
| TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) |
如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN。
使用 TEXTJOIN 合併列或行:
=TEXTJOIN(", ",TRUE,A1:C3)
在此公式中,A1:C3 是需要合併的連續區域。", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。
然後按下 Enter 鍵取得合併結果。
如果想用換行符作為分隔符,請在公式中使用 CHAR(10),如 =TEXTJOIN(CHAR(10),TRUE,A1:C3),然後將結果儲存格設為自動換行。
如果您已在 Excel 中安裝 Kutools for Excel,「合併行/列/儲存格並保留值」功能可以快速完成此工作。
1. 選取要合併為一個儲存格的區域,然後點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
2. 在彈出的對話框中,勾選「合併到單一儲存格」並根據需要指定分隔符,然後點擊「確定」。
現在,這些儲存格已用指定分隔符合併為一個儲存格。如果內容過多無法顯示,可點擊「常用」標籤下的「自動換行」顯示全部內容。
如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
| 轉置儲存格為單一列 |
![]() |
| 轉置儲存格為單一行 |
![]() |
3.21 命名區域並使用 INDEX 函數(僅適用於合併為單一列)
若要將區域轉置為單一列,可先命名區域,再使用 INDEX 函數。
1. 選取儲存格區域,右鍵開啟選單,點擊「定義名稱」。
2. 在彈出的新建名稱對話框中,在名稱文字框輸入名稱,點擊確定。
3. 命名區域後,選取要放置轉置資料的儲存格,使用如下 INDEX 函數:
=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)
如需有關 INDEX 函數的更多詳細資訊,請參閱此處。
4. 按下 Enter 鍵,然後拖曳自動填滿控點向下填充公式,直到出現 #REF! 錯誤值。
5. 刪除錯誤值,則區域已合併為單一列。
若要將儲存格合併為單一列,這裡也有一段 VBA 可以實現。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 將下方 VBA 程式碼複製並貼到空白模組中。
VBA:區域轉單列
Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
Rng.Copy
Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. 然後按下 F5 鍵或點擊 執行
按鈕,會跳出對話框讓您選取儲存格區域,點擊 確定.
4.另一個對話框會跳出,讓您選取放置結果的儲存格,點擊「確定」。
若要將儲存格合併為單一行,Excel 沒有內建功能支援。不過,如果您已安裝 Kutools for Excel,其「轉換區域」功能可支援區域轉單列或單行,也可將單行或單列轉為區域。
1. 選取儲存格區域,點擊 Kutools > 區域 >轉換區域。
2. 在「轉換區域」對話框中,根據需要勾選「區域轉單列」或「區域轉單行」選項。點擊「確定」。
3.會跳出對話框讓您選取放置結果的儲存格,點擊「確定」。
現在,該區域已轉換為一行或一列。
如需有關此功能的更多詳細資訊,請參閱轉換區域。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
如果有一個多列的表格中存在重複值,如何將多列堆疊為單一列且只保留唯一值,如下圖所示?
本節提供三種不同方法來處理此需求。
在 Excel 中,常見做法是逐一複製並貼上各列,然後刪除重複值。
1. 選取第一列並按下 Ctrl + C 複製,然後選取目標儲存格並按下 Ctrl + V。
2. 重複步驟1,將其他列依序貼到第一列下方。
3. 選取堆疊後的列,點擊 資料 > 刪除重複值,然後在 刪除重複值 對話框中勾選列名稱,點擊 確定.

4.會跳出對話框提醒您已刪除重複值。點擊「確定」關閉,堆疊列只保留唯一值。
如果有數百個列,逐一複製貼上會非常耗時。不過,如果您已在 Excel 中安裝 Kutools for Excel,「轉換區域」功能可快速將區域轉為單一列,再使用 Excel 的「刪除重複值」功能。
選取多列區域,點擊 Kutools > 區域 >轉換區域。
然後勾選「區域轉單列」選項,點擊「確定」選取放置堆疊列的儲存格。
然後應用「刪除重複值」以刪除重複項。
如需有關此功能的更多詳細資訊,請參閱轉換區域。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 30 天的 Kutools for Excel 免費試用,請立即下載。
此外,這裡也有一段 VBA 程式碼可以解決此需求。
1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
2. 將下方程式碼複製並貼到新模組中。
VBA:將多列堆疊為單一列且不重複
Sub FindUniques()
'UpdatebyExtendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set dic = CreateObject("Scripting.Dictionary")
For j = 1 To InputRng.Columns.Count
For i = 1 To InputRng.Rows.Count
xValue = InputRng.Cells(i, j).Value
If xValue <> "" And Not dic.Exists(xValue) Then
OutRng.Value = xValue
dic(xValue) = ""
Set OutRng = OutRng.Offset(1, 0)
End If
Next
Next
End Sub

3. 然後按下 F5 鍵或點擊 執行
按鈕,會跳出對話框讓您選取需要堆疊的列,點擊「確定」。
4. 在第二個彈出的對話框中,選取放置堆疊列的儲存格,點擊「確定」。
現在,這些列已堆疊為單一列且只保留唯一值。
如果有兩個列,其中一個有特殊格式(如自訂日期時間 mm/dd/yyyy),用一般方法合併這兩個列時,自訂格式會被移除,如下圖所示: 
本節將介紹如何合併儲存格並保留格式。
TEXT 函數可將數字轉為指定格式的文字。這裡可先將包含數字的儲存格轉為格式,再用「&」、CONCATENATE、CONCAT 或 TEXTJOIN 函數與其他儲存格合併。
如需一般合併儲存格的方法,請回到1.1。
| TEXT 函數語法說明 |
| TEXT (value, format_text) |
如需有關 TEXT 函數的更多詳細資訊,請參閱 TEXT 函數。
以下以在 CONCAT 函數中嵌入 TEXT 函數為例。
請將下方公式複製並貼到要放置合併結果的儲存格:
=CONCAT(TEXT(A2,"mm/dd/yyyy hh:mm")," ",B2)
在此公式中,A2 是要保留格式的儲存格,「mm/dd/yyyy hh:mm」是您使用的格式,B2 是要合併的另一個儲存格。" " 表示用空格分隔值。您可根據需要更改參照、格式和分隔符。
按下 Enter 鍵並拖曳自動填滿控點向下填充公式。
1. 選取要合併儲存格的表格,按下 Ctrl + C 複製。
2. 開啟空白 Word 文件,按下 Ctrl + V 貼上,然後點擊文件中的表格,此時表格右上角會出現十字圖示。
3. 點擊 版面配置 標籤,然後點擊 轉換為文字 在 資料 群組,在彈出的 轉換表格為文字 對話框中,指定列的分隔符。點擊 確定.

現在,Word 中的表格內容已轉為文字。
4. 選取轉換後的文字,按下 Ctrl + C 複製,回到 Excel 選取空白儲存格,按下 Ctrl + V 貼上合併結果。
最有效率的方法是使用 Kutools for Excel 的「合併行/列/儲存格並保留值」功能,勾選「使用格式化後的值」選項,合併結果將保留資料格式。
1. 選取包含結果儲存格的表格,點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
2. 在彈出的對話框中,根據需要指定合併操作,並取消勾選「使用格式化後的值」(預設為勾選)。點擊「確定」。
現在,資料已合併且保留格式。
如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值。
如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel。
如需 {module745} 天的 Kutools for Excel 免費試用,請立即下載。
假設有一個表格,分別在不同列中包含年、月、日,現在需要將這些列合併並生成日期,如下圖所示:
DATE 函數可用於根據年、月、日建立日期。
| DATE 函數語法說明 |
| DATE( year, month, day ) |
如需有關 DATE 函數的更多詳細資訊,請參閱 DATE 函數。
將下方公式複製並貼到要放置日期的儲存格:
=DATE(A2,B2,C2)
在此公式中,A2、B2 和 C2 分別為包含年、月、日的儲存格。
按下 Enter 鍵取得第一個日期,然後拖曳自動填滿控點向下填充以獲得所有日期。
更多 Excel 教學:
合併多個工作簿/工作表為一個
本教學幾乎涵蓋您可能遇到的所有合併情境,並為您提供專業解決方案。
分割文字、數字和日期儲存格(分列)
本教學分為三部分:分割文字儲存格、分割數字儲存格和分割日期儲存格,每部分均提供不同範例,協助您解決分割問題。
合併多個儲存格內容且不遺失資料
本教學針對儲存格中特定位置的提取進行說明,並彙整多種方法,協助您根據特定位置從儲存格中提取文字或數字。
比較兩個列的相同與不同
本文涵蓋您可能遇到的各種列比較情境,希望對您有所幫助。
- 超級公式欄(輕鬆編輯多行文字和公式);閱讀版面(輕鬆閱讀和編輯大量儲存格);貼上到已篩選區域...
- 合併儲存格/列/欄並保留數據;分割儲存格內容;合併重複列並求和/平均值... 防止重複儲存格;比較區域...
- 選擇重複或唯一列;選擇空白列(所有儲存格均為空);在多個工作簿中進行超級查找和模糊查找;隨機選擇...
- 精確複製多個儲存格而不改變公式引用;自動創建對多個工作表的引用;插入項目符號、核取方塊等...
- 收藏並快速插入公式、區域、圖表和圖片;使用密碼加密儲存格;建立郵件清單並發送電子郵件...
- 提取文本、添加文本、按位置刪除、刪除空格;創建並打印分頁小計;在儲存格內容和批註之間轉換...
- 超級篩選(保存並應用篩選方案到其他工作表);高級排序按月/週/日、頻率等;特殊篩選按粗體、斜體...
- 合併工作簿和工作表;基於關鍵列合併表格;將數據分割到多個工作表;批量轉換 xls、xlsx 和 PDF...
- 資料透視表按週數、星期幾等分組... 用不同顏色顯示未鎖定、已鎖定的儲存格;突出顯示包含公式/名稱的儲存格...
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
- 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
- 提高您的生產力 50%,每天減少數百次鼠標點擊!

















