Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

Excel 教學:合併列、行、儲存格

Author Sun Last modified

在日常 Excel 工作中,合併列、行或儲存格非常常見,例如將名字和姓氏(分別在兩個列)合併為一個列以獲得全名,根據相同 ID 合併行並對應值求和,或將一個區域的多個儲存格合併為單一儲存格等。本教學彙整了 Excel 中所有合併列/行/儲存格的情境,並為您提供不同的解決方案。

本教學導覽

1 將多個列/行合併為一個儲存格

1.1 將多個列/行合併為一個儲存格,並以空格、逗號或其他分隔符分隔

1.11 使用連接符號 (&)

1.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)

1.13 使用 CONCAT 函數或 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)

1.14 使用記事本(僅適用於合併列)

擴展:以換行符作為分隔符,將多個列/行合併為一個儲存格

1.2 將多個列/行合併為一個儲存格(忽略空白)

1.21 使用 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)

1.22 使用連接符號 (&)

1.23 使用 VBA 程式碼將內容加到儲存格末尾

1.3 將多個列/行/儲存格合併為一個儲存格且保留值

1.4 若有空白時合併兩個列

1.41 使用 IF 函數

1.42 使用 VBA

2. 合併具有相同 ID 的行

2.1 合併具有相同 ID 的行,並以逗號或其他分隔符分隔

2.11 使用 VBA

2.12 使用 IF 函數新增輔助列

2.13 使用實用工具 – 高級合併行

2.2 合併具有相同 ID 的行並進行計算

2.21 使用合併計算功能

2.22 使用 VBA

2.23 使用實用工具 – 高級合併行

2.3 合併相鄰且值相同的行

2.31 使用 VBA

2.32 使用實用工具 – 合併相同儲存格

3. 合併儲存格

3.1. 將多行多列合併為單一儲存格

3.11 使用連接符號 (&)

3.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)

3.13 使用 CONCAT 函數或 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)

3.14 使用「合併行/列/儲存格並保留值」功能

3.2. 將多個儲存格合併為單一列/單一行

3.21 命名區域並使用 INDEX 函數(僅適用於合併為單一列)

3.22 VBA(僅適用於單一列)

3.23 使用實用工具 –轉換區域

3.3 將多列堆疊為單一列且不重複

3.31 複製、貼上並刪除重複值

3.32 使用 VBA

3.4. 合併儲存格並保留格式

3.41 在公式中嵌入 TEXT 函數

3.42 使用 Microsoft Word

3.43 使用實用工具 – 合併且保留格式

3.5 合併儲存格生成日期

3.51 使用 DATE 函數

 

在本教學中,我會建立一些範例來說明各種方法。當您使用下方 VBA 程式碼或公式時,可以根據需要調整參照,或直接下載範例檔案來嘗試這些方法。

doc sample點擊下載範例檔案


1 將多個列/行合併為一個儲存格

1.1 將多個列/行合併為一個儲存格,並以空格、逗號或其他分隔符分隔

在 Excel 中,將多個列或行合併為一個儲存格,並以逗號、空格或其他分隔符分隔,如下圖所示,是最常見的操作之一。

將多個列合併為一個儲存格
combine columns into one cell
將多個行合併為一個儲存格
Combine rows into one cell

1.11 使用連接符號 (&)

在 Excel 中,連接符號 & 通常用於連接多個文字。

範例:將名字(A 列)和姓氏(B 列)合併為全名

選擇要放置合併結果的儲存格,然後輸入如下公式:

=A2&" "&B2

info icon在此公式中,& 用於連接文字,A2 和 B2 是需要合併的兩個文字," " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用逗號作為分隔符,只需輸入用雙引號括起來的逗號 ","。

按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。

範例:將編號(第15 行)和姓名(第16 行)合併到一個儲存格

如果要將多個行合併為一個儲存格,只需根據需要更改公式中的儲存格參照和分隔符,然後將自動填滿控點向右拖曳以獲得所有合併結果。
 use ampersand symbol to combine rows

1.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)

如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函數來完成此操作。

CONCATENATE 語法說明
CONCATENATE (text1,[text2],…)

如需有關 CONCATENATE 函數的更多詳細資訊,請參閱:CONCATENATE

範例:將姓名(F 列)和地址(G 列)合併為一個列

選擇要放置合併結果的儲存格,然後輸入如下公式:

=CONCATENATE(F2,",",G2)

info icon在此公式中,F2 和 G2 是需要合併的兩個文字,"," 是分隔符(逗號),用於在結果儲存格中分隔兩個文字。如果想用空格作為分隔符,只需輸入用雙引號括起來的空格 " "。

按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
use CONCATENATE function to combine columns

若要合併多個行,只需根據需要更改儲存格參照和分隔符,然後將自動填滿控點向右拖曳即可。
use CONCATENATE function to combine rows

1.13 使用 CONCAT 函數或 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)

如果您使用的是 Excel2019 或 Excel365,CONCAT 函數和 TEXTJOIN 函數會是更好的選擇。

CONCAT 語法說明
CONCAT (text1,[text2],…)

如需有關 CONCAT 函數的更多詳細資訊,請參閱:CONCAT

CONCAT 函數的用法與 CONCATENATE 函數相同,例如將名字和姓氏分別在兩個列中合併為一個列,公式如下:

=CONCAT(A21," ",B21)

info icon在此公式中,A21 和 B21 是需要合併的兩個文字," " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。

按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。
use CONCAT function to combine columns

與合併列不同,合併行時,輸入第一個公式後,需將自動填滿控點向右拖曳,直到所有合併結果都產生為止。

TEXTJOIN 語法說明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN

使用 TEXTJOIN 合併列或行:

=TEXTJOIN(",",TRUE,E21:G21))

info icon在此公式中,E21:G21 是需要合併的連續區域。" " 是分隔符(空格),用於在結果儲存格中分隔兩個文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。

按下 Enter 鍵取得合併結果,然後拖曳自動填滿控點向下填充以獲得所有合併結果。

忽略空白
use TEXTJOIN function to combine columns ignoring blanks
包含空白
use TEXTJOIN function to combine columns including blanks

1.14 使用記事本(僅適用於合併列)

1. 使用記事本也可以實現合併列(不適用於合併行)。

選取要合併為一列的區域,按下 Ctrl + C 鍵複製該區域。
copy the data range

2. 開啟記事本,按下 Ctrl + V 貼上複製的區域。
Open a Notepad and paste the data

3. 在記事本中選取兩個文字間的 Tab 鍵,然後按下 Ctrl + H 啟用 「替換」 功能,這時 「尋找內容」 文字框中已自動填入 Tab 符號。
press Ctrl + H to enable Replace feature

4. 在「替換為」文字框中輸入您想用來分隔合併文字的分隔符,然後點擊「全部替換」。接著關閉「替換」對話框。
type the delimiter to separate the combined texts in the replace textbox

5. 現在選取記事本中的文字,然後按下 Ctrl + C 來複製,然後回到 Excel,選取一個儲存格並按下 Ctrl + V 即可貼上合併後的結果。
copy and paste the data back to Excel filethe columns are combined into one cell

擴展:以換行符作為分隔符,將多個列/行合併為一個儲存格

如果您想將多個列或行合併為一個儲存格,並以換行符分隔,如下圖所示:
combine columns or rows into one cell with a line break

首先,您需要知道,在 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)

輸入上述公式後,選取結果,然後點擊「常用」>「自動換行」。
click Home > Wrap Text

現在,這些列已合併為一個儲存格,並以換行符分隔。
the columns are combined into one and separated by a line break

tip icon如果只想將一列中的多行合併為單一儲存格,Excel 的「兩端對齊」功能可以幫助您。選取包含多行的列,點擊「常用」>「填滿」>「兩端對齊」,這些行就會合併到區域的頂端儲存格,並以空格分隔。

click Home > Fill > Justify the rows are combined into the top cell with space

1.2 將多個列/行合併為一個儲存格(忽略空白)

本節將介紹如何將多個列或行合併為一個儲存格,並跳過空白儲存格,如下圖所示:
combine columns or rows and skip empty cells

1.21 使用 TEXTJOIN 函數(適用於 Excel2019 或 Excel365)

如果您使用的是 Excel2019 或 Excel365,幸運的是,新的 TEXTJOIN 函數可以輕鬆完成這項工作。

CONCATENATE 語法說明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN

範例:將姓名(A 列)、編號(B 列)和網域(C 列)合併為一個儲存格以產生電子郵件地址,其中部分編號可能為空白。

選擇用於放置合併結果的儲存格,輸入如下公式:

=TEXTJOIN("",TRUE,A2:C2)

info icon 在此公式中,A2:C2 是包含要合併文字的區域,"" 是分隔符(無),用於分隔結果儲存格中的文字。如果想用分隔符分隔,只需輸入用雙引號括起來的分隔符,例如 ","。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。

按下 Enter 鍵取得第一個結果,然後根據需要將自動填滿控點向下或向右拖曳以產生所有結果。
TEXTJOIN function to combine columns skip blank cells

1.22 使用連接符號 (&)

如果您使用的是 Excel2016 或更早版本,請使用連接符號 &逐一連接文字,並手動跳過空白。

選擇要放置合併結果的儲存格,然後輸入如下公式:

=A10&C10

info icon 在此公式中,& 用於連接文字,A10 和 C10 是需要合併的兩個文字。如果想用逗號作為分隔符,只需輸入用雙引號括起來的逗號 ",",並用 &連接兩個文字。

按下 Enter 鍵取得合併結果。然後更改公式中的參照以取得下一個合併結果。
ampersand symbol to combine columns skip blank cells

1.23 使用自訂函數

對於 Excel2016及更早版本的使用者,如果有多個列或行需要合併且要跳過空白,可以使用 VBA 建立自訂函數來快速解決這個問題。

1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗。

2. 點擊「插入」>「模組」以插入新模組。
Click Insert > Module to insert a new module

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

copy and paste the code into the module

4. 回到工作表,選擇要放置合併結果的儲存格,輸入公式

=Concatenatecells(A15:C15)

info icon 在此公式中,A15:C15 是包含要合併文字的區域。在 VBA 程式碼中,"_" 表示用於分隔合併結果中文字的分隔符,您可以根據需要更改分隔符。
enter a formula to get the result


1.3 將多個列/行/儲存格合併為一個儲存格且保留值

如果您已在 Excel 中安裝 Kutools for Excel,「合併行/列/儲存格並保留值」功能能夠大幅提升各種合併工作的效率。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選取要合併的儲存格及放置合併結果的儲存格。
Select the cells to combine and the cells to place the combined results

2. 點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
click Combine Rows, Columns or Cells without Losing Data feature

3. 在彈出的對話框中,根據下列步驟指定選項:
set options in the dialog box

1) 指定要合併列、合併行,或將所有儲存格合併為一個。

合併列 範例。 合併行 範例。 合併到單一儲存格 範例。
Combine columns Combine rows Combine into single cell

2) 指定合併結果中文字的分隔符。

3) 指定合併結果的位置(選擇「合併到單一儲存格」時此選項會停用)

選擇「合併列」時,可以指定將結果放在所選區域的左側儲存格或右側儲存格。

左側儲存格 範例。 右側儲存格 範例。
put the combined result to left cell put the combined result to right cell

選擇「合併行」時,可以指定將結果放在所選區域的頂端儲存格或底部儲存格。

頂端儲存格 範例。 底部儲存格 範例。
put the combined result to top cell put the combined result to bottom cell

4) 指定合併結果的操作方式。

4. 點擊「確定」或「應用」以完成合併。

保留這些儲存格的內容
Keep contents of combined cells
刪除這些儲存格的內容
Delete contents of combined cells
合併這些儲存格
Merge the combined cells

如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載


1.4 若有空白時合併兩個列

有時,您可能希望在合併兩個列時,若其中一個列有空白儲存格,則用另一個列的內容填補。例如,A 列包含使用者名稱及部分空白,B 列包含姓名,合併時只需將 A 列的空白儲存格用 B 列對應內容填滿,如下圖所示:
Combine two columns if blank

1.41 使用 IF 函數

IF 函數可用於測試特定條件。在此,您可以用 IF 函數測試儲存格是否為空,若為空則用另一個列的內容填補。

IF 函數語法說明
IF (logical_test, [value_if_true], [value_if_false])

如需有關 IF 函數的更多詳細資訊,請參閱:IF

選擇要放置合併結果的頂端儲存格,並複製或輸入下列公式:

=IF(A2="",B2,A2)

然後按下 Enter 鍵取得第一個結果,並拖曳自動填滿控點向下填充以獲得所有結果。
use IF function to combine two columns if blank

現在,只有 A 列的空白儲存格已用 B 列的內容填滿。

1.42 使用 VBA

這裡也提供一段 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 

copy and paste the code into the module

info icon在程式碼中,A:A 和 B:B 是將要合併的兩個列,您可根據需要進行修改。

3. 然後按下 F5 鍵或點擊 執行 run button按鈕,則若 A 列為空,會自動用 B 列的值填入。


2 合併具有相同 ID 的行

假設有一個包含多個列的表格,其中一個列包含有重複項的 ID 值。本教學將介紹如何根據相同 ID 合併表格中的行並進行計算。
sample data

2.1 合併具有相同 ID 的行,並以逗號或其他分隔符分隔

本節將介紹如何合併具有相同 ID 的行,並以逗號分隔,如下圖所示:
Combine rows with same ID and separated by comma

2.11 使用 VBA

這裡提供一段 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

copy and paste the code into the module

3. 然後按下 F5 鍵或點擊 執行 run button按鈕,這時會跳出 Kutools for Excel 對話框,讓您選取需要合併相同 ID 行的表格。
select a table that needs to be combined rows with the same ID

4. 點擊「確定」。現在所選表格已根據相同 ID 合併行。

2.12 使用 IF 函數新增輔助列

如果只有兩個列,並且您想將具有相同 ID 的行合併,並用逗號分隔另一個列的值,如下圖所示,可以使用 IF 函數來實現。
combine the rows with the same ID, and another column values separated by a comma

1. 將 ID由 A 到 Z 排序。選取 ID 列,點擊「資料」>「排序 A 到 Z」。
Data > Sort A to Z

2. 在「排序警告」對話框中,勾選「展開選取範圍」選項,點擊「排序」
check Expand the selection option, and click Sort

現在,相同的 ID 已經被排序在一起。
the same IDs have been sorted together

3. 在相鄰列中,使用如下 IF 函數:

=IF(A17=A18,C17&", "&B18,B18)

info icon在此公式中,A17 和 A18 是 ID 列中的兩個相鄰儲存格(A17 為 ID 列標題),B18 為 A18 對應的儲存格。", " 表示用逗號分隔值。您可根據需要更改參照和分隔符。

4. 按下 Enter 鍵取得第一個結果,然後拖曳自動填滿控點向下填充以獲得所有結果。
enter a fromula to get the result

5. 到相鄰列,輸入如下公式:

=IF(A18<>A19,"Merged","")

info icon在此公式中,A18 和 A19 是 ID 列中的兩個相鄰儲存格,若兩者不相等則回傳「Merged」,否則回傳空白。

6. 按下 Enter 鍵取得第一個結果,然後拖曳自動填滿控點向下填充以獲得所有結果。
enter a formula to check the merged cells

7. 選取最後一個公式列(含標題),點擊「資料」>「篩選」。
 click Data > Filter

8. 點擊篩選按鈕,在下拉選單中勾選「Merged」核取方塊,點擊「確定」。
tick Merged checkbox in Filter list

現在只篩選出已合併的行,複製這些資料並貼到其他位置。
copy the filtered data and paste to other place

如需更多 IF 函數的詳細說明,請參閱:IF

2.13 使用實用工具 – 高級合併行

如果您已在 Excel 中安裝 Kutools for Excel,「高級合併行」功能可以輕鬆完成此工作。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選取表格,然後點擊 Kutools > 合併與分割 > 高級合併行。
click Advanced Combine Rows feature of kutools

2. 在「高級合併行」對話框中,請依下列步驟操作:

1) 選擇 ID 列,並設為主鍵;

2) 選擇要合併值的列,點擊「合併」並選擇分隔符。

3)點擊「確定」。

現在,這些行已根據相同 ID 合併。
the rows have been combined by the same ID

高級合併行功能會破壞原始資料,請在使用前先備份資料。

如需有關此功能的更多詳細資訊,請參閱高級合併行

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載

2.2 合併具有相同 ID 的行並進行計算

如果您想將具有相同 ID 的行合併,然後對值進行求和或其他計算,如下圖所示,以下方法可以協助您。
Combine rows with same ID and do some calculations

2.21 使用合併計算功能

如果只有兩個列,一個列包含文字(ID),另一個列包含需要計算的值(如求和),Excel內建的「合併計算」功能可以協助您。

1. 選擇要放置合併結果的儲存格,然後點擊「資料」>「合併計算」。
click Data > Consolidate

2. 在「合併計算」對話框中,請依下列步驟操作:

1) 根據需要選擇函數;

2) 點擊箭頭選取表格;

3) 點擊「新增」將所選區域添加到「所有參照」清單;

4) 勾選「首行」和「最左列」核取方塊;

5) 點擊「確定」。

現在,表格已根據相同 ID進行求和。
the table has been summed based on the same ID

2.22 使用 VBA

這裡也提供一段 VBA,可以合併具有相同 ID 的行並進行求和。

1. 按下 Alt + F11 鍵開啟 Microsoft Visual Basic for Applications 視窗,然後點擊「插入」>「模組」建立新空白模組。
click Insert > Module to create a new blank module

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 Sub

3. 然後按下 F5 鍵或點擊 執行 run button按鈕,會跳出對話框讓您選取要使用的表格,然後點擊 確定.

現在,所選區域已根據相同值合併並求和。

note buttonVBA會破壞原始資料,請在使用前先備份資料。

2.23 使用實用工具 – 高級合併行

如果表格中有兩個以上的列需要合併並進行計算,例如有三個列,第一個列包含需合併的重複產品名稱,第二個列包含需合併並以逗號分隔的商店名稱,最後一個列包含需根據重複行求和的數字,如下圖所示,Kutools for Excel 的「高級合併行」功能可以協助您。
combine and do calculations

1. 選取表格,然後點擊 Kutools > 合併與分割 > 高級合併行。
click Advanced Combine Rows feature of kutools

2. 在「高級合併行」對話框中,請依下列步驟操作:

1) 選擇 ID 列,並設為主鍵;

2) 選擇要合併值的列,點擊「合併」並選擇分隔符。

3) 選擇要進行計算的列,點擊「計算」並選擇一種計算方式。

4)點擊「確定」。

現在,這些行已根據相同行合併並完成計算。

note button高級合併行功能會破壞原始資料,請在使用前先備份資料。

如需有關此功能的更多詳細資訊,請參閱高級合併行

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載

2.3 合併相鄰且值相同的行

如果有一個包含多個列的表格,其中一個列包含一些重複值,現在需要將該列中相鄰且值相同的行合併,如下圖所示。該如何操作?
Combine adjacent rows with same value

2.31 使用 VBA

在 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

copy and paste the code into the module

3. 然後按下 F5 鍵或點擊 執行 run button按鈕以啟用 VBA,然後會跳出對話框讓您選取要使用的表格,接著點擊 確定.
select the data range

現在,第一個列中相鄰且值相同的行已在所選區域合併。

note buttonVBA會破壞原始資料,請在使用前先備份資料。此 VBA會合併所選表格第一個列中相同的值。

2.32 使用實用工具 – 合併相同儲存格

如果您已在 Excel 中安裝 Kutools for Excel,其「合併相同儲存格」功能可一步完成此工作。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

選取要合併相同值的列,然後點擊 Kutools > 合併與分割 > 合併相同儲存格。
click Merge Same Cells feature of kutools

現在,相鄰且值相同的儲存格已被合併。

tip button如果您想取消合併儲存格並還原內容,可以使用 取消合併儲存格並填充值 功能。
apply the Unmerge Cells & Fill Values feature
unmerge the merged cells and fill values back

如需有關此功能的更多詳細資訊,請參閱合併相同儲存格

如需有關此功能的更多詳細資訊,請參閱取消合併儲存格

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載


3 合併儲存格

3.1. 將多行多列合併為單一儲存格

若要將多行多列的區域合併為單一儲存格,這裡提供四種方法。

範例:合併區域 A1:C3
Combine multiple rows and columns into a single cell

3.11 使用連接符號 (&)

在 Excel 中,連接符號 & 通常用於連接多個文字。

選擇要放置合併結果的儲存格,然後輸入如下公式:

=A1&", "&B1&", "&C1&", "&A2&", " &B2&", "&C2&", "&A3&", "&B3&", "&C3

info icon在此公式中,& 用於連接文字,", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。

按下 Enter 鍵取得合併結果。

3.12 使用 CONCATENATE 函數(適用於 Excel2016 或更早版本)

如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函數來完成此操作。

CONCATENATE 語法說明
CONCATENATE (text1,[text2],…)

如需有關 CONCATENATE 函數的更多詳細資訊,請參閱:CONCATENATE

選擇要放置合併結果的儲存格,然後輸入如下公式:

=CONCATENATE(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)

info icon在此公式中,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)

info icon在此公式中,A1、B1…、C3 是您要合併的文字。", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。

然後按下 Enter 鍵取得合併結果。

TEXTJOIN 語法說明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

如需有關 TEXTJOIN 函數的更多詳細資訊,請參閱:TEXTJOIN

使用 TEXTJOIN 合併列或行:

=TEXTJOIN(", ",TRUE,A1:C3)

info icon在此公式中,A1:C3 是需要合併的連續區域。", " 是分隔符(逗號+空格),用於分隔結果儲存格中的文字。如果想用其他分隔符,只需輸入用雙引號括起來的分隔符。邏輯值 TRUE 表示合併時忽略空白儲存格,若要包含空白,請將 TRUE 改為 FALSE。

然後按下 Enter 鍵取得合併結果。

tip button如果想用換行符作為分隔符,請在公式中使用 CHAR(10),如 =TEXTJOIN(CHAR(10),TRUE,A1:C3),然後將結果儲存格設為自動換行。
format the result cell as Wrap Text

3.14 使用「合併行/列/儲存格並保留值」功能

如果您已在 Excel 中安裝 Kutools for Excel,「合併行/列/儲存格並保留值」功能可以快速完成此工作。

1. 選取要合併為一個儲存格的區域,然後點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
click Combine Rows, Columns or Cells without Losing Data feature of kutools

2. 在彈出的對話框中,勾選「合併到單一儲存格」並根據需要指定分隔符,然後點擊「確定」。
specify the options in the dialog box

現在,這些儲存格已用指定分隔符合併為一個儲存格。如果內容過多無法顯示,可點擊「常用」標籤下的「自動換行」顯示全部內容。
the cells are merged into one cell with a specific delimiter

如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載

3.2 將多行多列合併為單一列/單一行

轉置儲存格為單一列
  Transpose cells into one single column
轉置儲存格為單一行
 Transpose cells into one single row
 

3.21 命名區域並使用 INDEX 函數(僅適用於合併為單一列)

若要將區域轉置為單一列,可先命名區域,再使用 INDEX 函數。

1. 選取儲存格區域,右鍵開啟選單,點擊「定義名稱」。
 right-click the data range, and click Define Name

2. 在彈出的新建名稱對話框中,在名稱文字框輸入名稱,點擊確定
type a name in the Name textbox

3. 命名區域後,選取要放置轉置資料的儲存格,使用如下 INDEX 函數:

=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)

如需有關 INDEX 函數的更多詳細資訊,請參閱此處

4. 按下 Enter 鍵,然後拖曳自動填滿控點向下填充公式,直到出現 #REF! 錯誤值。
enter a formula and drga the formula down

5. 刪除錯誤值,則區域已合併為單一列。

3.22 VBA(僅適用於單一列)

若要將儲存格合併為單一列,這裡也有一段 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

copy and paste the vba code into the module

3. 然後按下 F5 鍵或點擊 執行 run button按鈕,會跳出對話框讓您選取儲存格區域,點擊 確定.
select a range of cells

4.另一個對話框會跳出,讓您選取放置結果的儲存格,點擊「確定」。
select a cell to place the result

3.23 使用實用工具 –轉換區域

若要將儲存格合併為單一行,Excel 沒有內建功能支援。不過,如果您已安裝 Kutools for Excel,其「轉換區域」功能可支援區域轉單列或單行,也可將單行或單列轉為區域。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選取儲存格區域,點擊 Kutools > 區域 >轉換區域
click Transform Range feature of kutools

2. 在「轉換區域」對話框中,根據需要勾選「區域轉單列」或「區域轉單行」選項。點擊「確定」。
select the option you need

3.會跳出對話框讓您選取放置結果的儲存格,點擊「確定」。
select a cell to place the result

現在,該區域已轉換為一行或一列。

如需有關此功能的更多詳細資訊,請參閱轉換區域

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載

3.3 將多列堆疊為單一列且不重複

如果有一個多列的表格中存在重複值,如何將多列堆疊為單一列且只保留唯一值,如下圖所示?
Stack columns into one column without duplicate

本節提供三種不同方法來處理此需求。

3.31 複製、貼上並刪除重複值

在 Excel 中,常見做法是逐一複製並貼上各列,然後刪除重複值。

1. 選取第一列並按下 Ctrl + C 複製,然後選取目標儲存格並按下 Ctrl + V
copy and paste the first column data

2. 重複步驟1,將其他列依序貼到第一列下方。
repeat to copy other columns data below the first column

3. 選取堆疊後的列,點擊 資料 > 刪除重複值,然後在 刪除重複值 對話框中勾選列名稱,點擊 確定.
click Data > Remove Duplicates
check the column name in the dialog box

4.會跳出對話框提醒您已刪除重複值。點擊「確定」關閉,堆疊列只保留唯一值。
all duplicates are removed

tip button如果有數百個列,逐一複製貼上會非常耗時。不過,如果您已在 Excel 中安裝 Kutools for Excel,「轉換區域」功能可快速將區域轉為單一列,再使用 Excel 的「刪除重複值」功能。

選取多列區域,點擊 Kutools > 區域 >轉換區域
click Transform Range feature of kutools

然後勾選「區域轉單列」選項,點擊「確定」選取放置堆疊列的儲存格。
check the Range to single column option

然後應用「刪除重複值」以刪除重複項。

如需有關此功能的更多詳細資訊,請參閱轉換區域

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 30 天的 Kutools for Excel 免費試用,請立即下載

3.32 使用 VBA

此外,這裡也有一段 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

copy and paste the code into the module

3. 然後按下 F5 鍵或點擊 執行 run button按鈕,會跳出對話框讓您選取需要堆疊的列,點擊「確定」。
select the columns that needed To be stacked

4. 在第二個彈出的對話框中,選取放置堆疊列的儲存格,點擊「確定」。
select a destinate cell to place the stacked column

現在,這些列已堆疊為單一列且只保留唯一值。

3.4. 合併儲存格並保留格式

如果有兩個列,其中一個有特殊格式(如自訂日期時間 mm/dd/yyyy),用一般方法合併這兩個列時,自訂格式會被移除,如下圖所示:
Combine cells but losing formatting

本節將介紹如何合併儲存格並保留格式。
Combine cells and keep formatting

3.41 在公式中嵌入 TEXT 函數

TEXT 函數可將數字轉為指定格式的文字。這裡可先將包含數字的儲存格轉為格式,再用「&」、CONCATENATE、CONCAT 或 TEXTJOIN 函數與其他儲存格合併。

如需一般合併儲存格的方法,請回到1.1

TEXT 函數語法說明
TEXT (value, format_text)

如需有關 TEXT 函數的更多詳細資訊,請參閱 TEXT 函數。

以下以在 CONCAT 函數中嵌入 TEXT 函數為例。

請將下方公式複製並貼到要放置合併結果的儲存格:

=CONCAT(TEXT(A2,"mm/dd/yyyy hh:mm")," ",B2)

info icon在此公式中,A2 是要保留格式的儲存格,「mm/dd/yyyy hh:mm」是您使用的格式,B2 是要合併的另一個儲存格。" " 表示用空格分隔值。您可根據需要更改參照、格式和分隔符。

按下 Enter 鍵並拖曳自動填滿控點向下填充公式。

3.42 使用 Microsoft Word

1. 選取要合併儲存格的表格,按下 Ctrl + C 複製。
copy the data range

2. 開啟空白 Word 文件,按下 Ctrl + V 貼上,然後點擊文件中的表格,此時表格右上角會出現十字圖示。
paste the range to word

3. 點擊 版面配置 標籤,然後點擊 轉換為文字資料 群組,在彈出的 轉換表格為文字 對話框中,指定列的分隔符。點擊 確定.
click Convert to Text in the Data group
specify the separator for the columns

現在,Word 中的表格內容已轉為文字。
the contents of table in Word have been converted to texts

4. 選取轉換後的文字,按下 Ctrl + C 複製,回到 Excel 選取空白儲存格,按下 Ctrl + V 貼上合併結果。
copy and paste back to Excel file

3.43 使用實用工具 – 合併且保留格式

最有效率的方法是使用 Kutools for Excel 的「合併行/列/儲存格並保留值」功能,勾選「使用格式化後的值」選項,合併結果將保留資料格式。

1. 選取包含結果儲存格的表格,點擊 Kutools > 合併與分割 > 合併行/列/儲存格並保留值。
click Combine Rows, Columns or Cells without Losing Data feature of kutools

2. 在彈出的對話框中,根據需要指定合併操作,並取消勾選「使用格式化後的值」(預設為勾選)。點擊「確定」。
specify the combine operation in the dialog box

現在,資料已合併且保留格式。
the data has been combined and keep the formatting

如需有關此功能的更多詳細資訊,請參閱合併列、行、儲存格並保留值

如需有關 Kutools for Excel 的更多詳細資訊,請參閱 Kutools for Excel

如需 {module745} 天的 Kutools for Excel 免費試用,請立即下載

3.5 合併儲存格生成日期

假設有一個表格,分別在不同列中包含年、月、日,現在需要將這些列合併並生成日期,如下圖所示:
Combine cells to make date

3.51 使用 DATE 函數

DATE 函數可用於根據年、月、日建立日期。

DATE 函數語法說明
DATE( year, month, day )

如需有關 DATE 函數的更多詳細資訊,請參閱 DATE 函數。

將下方公式複製並貼到要放置日期的儲存格:

=DATE(A2,B2,C2)

info icon在此公式中,A2、B2 和 C2 分別為包含年、月、日的儲存格。

按下 Enter 鍵取得第一個日期,然後拖曳自動填滿控點向下填充以獲得所有日期。
use date function to get the result


更多 Excel 教學:

合併多個工作簿/工作表為一個
本教學幾乎涵蓋您可能遇到的所有合併情境,並為您提供專業解決方案。

分割文字、數字和日期儲存格(分列)
本教學分為三部分:分割文字儲存格、分割數字儲存格和分割日期儲存格,每部分均提供不同範例,協助您解決分割問題。

合併多個儲存格內容且不遺失資料
本教學針對儲存格中特定位置的提取進行說明,並彙整多種方法,協助您根據特定位置從儲存格中提取文字或數字。

比較兩個列的相同與不同
本文涵蓋您可能遇到的各種列比較情境,希望對您有所幫助。


  • 超級公式欄(輕鬆編輯多行文字和公式);閱讀版面(輕鬆閱讀和編輯大量儲存格);貼上到已篩選區域...
  • 合併儲存格/列/欄並保留數據;分割儲存格內容;合併重複列並求和/平均值... 防止重複儲存格;比較區域...
  • 選擇重複或唯一列;選擇空白列(所有儲存格均為空);在多個工作簿中進行超級查找和模糊查找;隨機選擇...
  • 精確複製多個儲存格而不改變公式引用;自動創建對多個工作表的引用;插入項目符號、核取方塊等...
  • 收藏並快速插入公式、區域、圖表和圖片;使用密碼加密儲存格建立郵件清單並發送電子郵件...
  • 提取文本、添加文本、按位置刪除、刪除空格;創建並打印分頁小計;在儲存格內容和批註之間轉換...
  • 超級篩選(保存並應用篩選方案到其他工作表);高級排序按月/週/日、頻率等;特殊篩選按粗體、斜體...
  • 合併工作簿和工作表;基於關鍵列合併表格;將數據分割到多個工作表批量轉換 xls、xlsx 和 PDF...
  • 資料透視表按週數、星期幾等分組... 用不同顏色顯示未鎖定、已鎖定的儲存格突出顯示包含公式/名稱的儲存格...
kte tab 201905
  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
  • 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
  • 提高您的生產力 50%,每天減少數百次鼠標點擊!
officetab bottom