Excel中存在合併的單元格,對我們來說已經是司空見慣啦!在另外一些時候我們又需要將已經合併的單元格的值,進行取消合併,並每個都填充原來合併之前的值。
對於結構簡單的帶有合併單元格的表格,我們一般正常操作是手動取消單元格合併,然後手動進行定位,然後填充空白值。但是如果有幾千行數據,或者上萬行數據需要取消合併單元格時在每個單元格中保留內容,你確定需要一個一個的手動進行操作嗎?其實你大可不必慌張,我們可以一鍵操作即可。
照例舉一個例子,源數據如下圖所示,B列為已經合併的數據,需要將部門欄位取消合併單元格並在每個單元格中保留內容。
源數據:
我們先看看動畫執行的效果:
看了以上的動畫,你是不是發現批量操作取消合併單元格,並保留原來的值,其實很簡單。
您只需要將以下代碼複製到Excel的VBE窗口的模塊中,然後執行程序即可。
PS:操作流程如下,按照順序1到4步,然後執行程序。
附上Excel VBA代碼
Sub CancelMergeCells()
Dim r As Integer,MergeStr As String,MergeCot As Integer,i As Integer
Dim rng As Range
On Error Resume Next
選擇需要合併的列,由用戶進行制定,並限定值
Set rng = Application.InputBox("請輸入需要合併的列", "區域選擇", , , , , , 8)
將用戶指定的單元列取得行號
k = rng.Column
With Sheet1
取得最大循環數
r = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To r
將合併單元格賦值給到變量
MergeStr = .Cells(i, k).Value
計算合併單元格區域的大小
MergeCot = .Cells(i, k).MergeArea.Count
取消合併單元格
.Cells(i, k).UnMerge
將取消的單元格進行賦值填充
.Range(.Cells(i, k), .Cells(i + MergeCot - 1, k)).Value = MergeStr
循環的步長進行累加,減少循環的次數
i = i + MergeCot - 1
Next
添加邊框線,數據美化
.Range("A1:C" & r).Borders.LineStyle = xlContinuous
End With
End Sub
以上就是今天要和大家分享的技巧,希望對大家有所幫助,祝各位一天好心情!
唯有不斷學習,才能不被淘汰!
Excel中每一個方法都有特定的用途,不是他們沒有用處,只是你不了解或者暫時用不著,建議你收藏起來,萬一哪天用著呢?