Note: The other languages of the website are Google-translated. Back to English

如何在Excel中快速合併具有相同數據的相鄰行?

假設您有一個工作表,在相鄰的行中有相同的數據,現在您想將相同的單元格合併到一個單元格中,以使數據看起來整潔美觀。 如何快速方便地合併具有相同數據的相鄰行? 今天,我將向您介紹一些解決此問題的快速方法。


使用VBA代碼合併同一數據的相鄰行

當然,您可以合併相同的數據 合併與中心 命令,但是如果有數百個單元需要合併,則此方法將很耗時。 因此,以下VBA代碼可以幫助您輕鬆合併相同的數據。

1。 按住 ALT + F11 鍵,然後打開 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊,然後將以下宏粘貼到 模塊窗口。

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 鍵以運行此代碼,屏幕上會顯示一個對話框,用於選擇要使用的範圍。 看截圖:

doc合併相同的單元格2

4. 然後點擊 OK,則A列中的相同數據將合併在一起。 看截圖:

doc合併相同的單元格1


使用Kutools for Excel合併相同數據的相鄰行

隨著 合併相同的單元格 的效用 Excel的Kutools,您只需單擊一下即可快速合併多個列中的相同值。

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

安裝後 Excel的Kutools,您可以執行以下操作:

1。 選擇要合併具有相同數據的相鄰行的列。

2。 點擊 庫工具 > 合併與拆分 > 合併相同的單元格,請參見屏幕截圖:

3。 然後,所選列中的相同數據已合併到一個單元格中。 看截圖:

doc合併相同的單元格4

點擊下載Kutools for Excel並立即免費試用!

要了解更多信息,請訪問此 合併相同的單元格 功能。


演示:將相同的單元格合併到一個單元格中,或取消合併以填充重複的值:

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

最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

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

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (43)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
如何復制 VBA 宏以合併列而不是行中的相鄰單元格? 謝謝
網站主持人對此評論進行了最小化
Violeta,我複制了這一行(如下)。 例如嘗試嘗試例如嘗試嘗試並將代碼更改為: Next WorkRng.Parent.Range(Rng.Cells(1, i), Rng.Cells(1, j - 1)).Merge i = j - 1 It將上面的行合併到“eg”和“try”
網站主持人對此評論進行了最小化
對於仍在努力實現這一目標的任何人,我想我已經掌握了代碼開始 ******************************** ***** Sub MergeSameCell() 'Updateby20131127 Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "MergeSimilar" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address , 類型:= 8) Application.ScreenUpdating = False Application.DisplayAlerts = False 'xRows = WorkRng.Rows.Count xCols = WorkRng.Columns.Count '對於 WorkRng.Columns 中的每個 Rng ' 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 For Each Rng In WorkRng.Rows For i = 1 To xCols - 1 For j = i + 1 To xCols If Rng.Cells(1, i).Value Rng.Cells(1, j).Value Then Exit For End If Next WorkRng.Parent.Range(Rng.Cells(1, i), Rng.Cells(1, j - 1)).Merge i = j - 1 Next Next Application.DisplayAlerts = True Appl ication.ScreenUpdating = True End Sub ************************************* End of Code IE 簡單修改將任何行引用交換為列引用的代碼
網站主持人對此評論進行了最小化
非常感謝!!! 在關鍵時刻幫助了我
網站主持人對此評論進行了最小化
這對我有用很多次:) 非常感謝,它為我節省了很多工作時間。 我有一個小要求。 我正在嘗試找到進行相同合併的方法,但是當每個值下方有空單元格時,將每個單元格與下面的所有空單元格合併。 如何修改宏? 先感謝您
網站主持人對此評論進行了最小化
試試這個代碼 Sub MergeSameCell() 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 If Not IsEmpty(Rng.Cells(i, 1).Value) Or Not IsEmpty(Rng.Cells(j - 1, 1).Value ) 然後 WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge End If i = j - 1 Next Next Application.DisplayAlerts = True Application.ScreenUpdating = True End子
網站主持人對此評論進行了最小化
試試這個代碼 Sub MergeSameCell() 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 If Not IsEmpty(Rng.Cells(i, 1).Value) Or Not IsEmpty(Rng.Cells(j - 1, 1).Value ) 然後 WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge End If i = j - 1 Next Next Application.DisplayAlerts = True Application.ScreenUpdating = True End子
網站主持人對此評論進行了最小化
如果我有相同的名字 lie Raju 1000 Raju 2000 Monu 100 Monu 200 那麼我怎麼能用金額做marge名字
網站主持人對此評論進行了最小化
嗨,運行此宏時,我在 WorkRng.Parent.Range(rng.Cells(i, 1), rng.Cells(j - 1, 1)).Merge Any 行收到“應用程序定義或對象定義錯誤”想法如何解決? 真誠的,邁克爾
網站主持人對此評論進行了最小化
我得到同樣的錯誤。 你知道了嗎? 如果你這樣做,你是怎麼做的? 謝謝
網站主持人對此評論進行了最小化
我收到同樣的錯誤
網站主持人對此評論進行了最小化
我在這裡修改了腳本,以便它將下面的單元格與相同的值或空單元格合併: Sub MergeSameCell() 'Updateby20131127 Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection設置 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(j, 1).Value "" Then If Rng.Cells(i, 1).Value Rng.Cells(j, 1).Value Then Exit For End If 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結束子
網站主持人對此評論進行了最小化
嗨,請幫忙。 我的代碼有問題,這條線。 哪裡不對了? 如果 Rng.Cells(j, 1).Value "" 那麼
網站主持人對此評論進行了最小化
你好呀。 你應該有:如果 Rng.Cells(j, 1).Value = "" 那麼......
網站主持人對此評論進行了最小化
合併不錯。 但它需要在運行代碼時指定範圍。 我想在 vba 代碼中指定範圍,即 B1:B50。 並使其左上對齊,但請提供幫助。
網站主持人對此評論進行了最小化
運行上述代碼時,會顯示編譯錯誤:語法錯誤。 在使用“”的行和此行的下一行。
網站主持人對此評論進行了最小化
我也遇到了這條線的這個問題。 如果 Rng.Cells(j, 1).Value "" 那麼有人可以幫忙嗎?
網站主持人對此評論進行了最小化
你好,如何在沒有用戶輸入的情況下自動放置範圍
網站主持人對此評論進行了最小化
很抱歉,我讓其他人為我編寫腳本,我不知道可以幫助您進行修改。
網站主持人對此評論進行了最小化
你好,先生, 。 我嘗試了 vba 代碼,但它不起作用。 .408 的錯誤消息。 特別是評論 WorkRng.Parent。 Range(rng.Cells (i, 1), rng.Cells(j - 1, 1)).Merge。 請發送解決方案。 我花了很多時間合併文檔。 我主要合併了這種格式的單元格 C20059290。 感謝並問候普魯索薩曼。 C
網站主持人對此評論進行了最小化
尊敬的先生, 。 我正在為合併單元格的 Excel 工作表使用 vba 代碼。 它無法正常工作是因為 408 錯誤。 特別是這段代碼 WorkRng.Parent。 Range(rng.Cells (i, 1), rng.Cells(j - 1, 1)).Merge。 給出解決方案。 感謝和問候普魯索薩曼
網站主持人對此評論進行了最小化
嗨,有人可以用逆向工程來指導 - 對所有單元格填充相同的值。
網站主持人對此評論進行了最小化
嗨,makro 可以工作,但是現在當我想過濾 A 列時,只能看到 B 列中適用於 A 列的第一個信息。 查看 makro 中給出的示例,如果我想在合併完成後的星期一進行過濾,則只會顯示 Nicol,並且不會顯示來自 Lucy 和 Lily 的信息。 我可以添加一行來避免這種情況嗎?
網站主持人對此評論進行了最小化
如果你真的想過濾,那麼合併單元格不會幫助你。
網站主持人對此評論進行了最小化
In EXCEL INPUT NAME PRO1 PRO2 PRO3 A B C output A PRO1 A PRO2 A PRO3 B PRO1 B PRO2 B PRO3 C PRO1 C PRO2 C PRO3
網站主持人對此評論進行了最小化
這真的很有幫助,並且在更大程度上節省了我的時間
網站主持人對此評論進行了最小化
是否可以修改 VBA 代碼以實現跨列合併(而不是向下行,如上所述)然後對所有行重複?
網站主持人對此評論進行了最小化
使用上面的代碼,然後轉置結果
網站主持人對此評論進行了最小化
很有幫助 !! 非常感謝
網站主持人對此評論進行了最小化
哦,伙計,你節省了我很多時間。 謝謝!!!!
網站主持人對此評論進行了最小化
在上面的 VBA 代碼行號 19 "i=j-1"
無論如何,它將如何影響我們的邏輯? 我確實刪除了它,仍然可以獲得相同的結果!
為什麼它存在的任何特定目的?
網站主持人對此評論進行了最小化
它是將值 i 限制為最後一行。
請無視此帖!
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護