在實際工作中,對于結構簡單的帶有合并單元格的表格,一般可以通過取消合并單元格後,再通過定位空值然後進行填充,但是對于這種填充隻對結構簡單的表格有效,如果合并單元格的區域像下面這樣子,又将如何取消合并并且填充呢?
多種樣式的單元格合并
很顯然,對于部門列的單元格合并,由于數據結構十分複雜,上述的做法已經不能滿足需求了,一般的查找與引用函數也不會奏效,那麼你可以試一下VBA法,兩個for循環就可搞定,廢話不多說,直接上GIF效果圖。
動态演示圖
下面的代碼你可以直接拷貝到你電腦上用(粘貼到代碼窗口[VBE界面]),主要意思是通過你選擇的區域進行循環取消合并單元格:
Sub UnMergeRange2() '取消合并單元格
Dim MaxRow As Integer '
Dim Rng As Range
Dim x%, y%, m%, n%, i%
Dim Rng2 As Range
'Dim x% 等價于 Dim x As Integer
On Error ResumeNext'發生錯誤繼續運行
'Rng接收選擇的區域
Set Rng = Application.InputBox("請選擇需要取消合并單元格的區域:", _
"區域選擇", , , , , , 8)
'x循環選擇區域的行
'y循環選擇區域的列
For x = 1 To Rng.Rows.Count
For y = 1 ToRng.Columns.Count
'Rng2 接收循環在選擇區域的行列(單元格)
Set Rng2 = Rng.Cells(x, y)
'i 接收Rng2合并單元格的合并單元格的數量
i = Rng2.MergeArea.Count
'當i=1時,則不存在合并單元格
'當i>1時,說明存在合并單元格
If i > 1 Then
'm 接收Rng2合并單元格區域 行數的統計
'n 接收Rng2合并單元格區域 列數的統計
m = Rng2.MergeArea.Rows.Count
n =Rng2.MergeArea.Columns.Count
Rng2.UnMerge '取消合并單元格
'Rng2(取消合并後)擴展m行n列的區域,
'等于Rng2的内容
Rng2.Resize(m, n).Value =Rng2.Value
End If
Next
Next
End Sub
包含完整代碼的Excel文件在此:
特殊時期,小夥伴們盡量不要出門。悶了,就看看窗外的景色吧。
圖文作者:趙中山
原載公衆号 速錄小知識
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!