返回列表 上一主題 發帖

[發問] 儲存格合併

[發問] 儲存格合併

網頁資料下載至Excel,部份欄位原為合併的卻變為無合併,是否可使用程式再將儲存格做合併動作



儲存格合併.zip (2.6 KB)

回復 1# jcchiang
  1. Sub ex()
  2. Application.DisplayAlerts = False
  3. Range("A1:G19").UnMerge
  4. For i = 1 To Range("A1:G19").Columns.Count
  5.    If Application.CountBlank(Range("A1:G19").Columns(i)) > 0 Then
  6.       Set Rng = Range("A1:G19").Columns(i).SpecialCells(xlCellTypeBlanks)
  7.       Union(Rng, Rng.Offset(-1, 0)).Merge
  8.    End If
  9. Next
  10. Application.DisplayAlerts = True
  11. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 2# Hsieh
如果有連續2個要合併的,第二個會被會被第一個一併合併

Test4被Test3合併了

儲存格合併1.jpg (207.86 KB)

儲存格合併1.jpg

TOP

回復 3# jcchiang
  1. Sub ex()
  2. Dim Rng As Range
  3. With Range("A1:G19")
  4. .UnMerge
  5.    For i = 1 To .Columns.Count
  6.    If Application.CountBlank(.Columns(i)) > 0 Then
  7.      Set Rng = .Columns(i).SpecialCells(xlCellTypeBlanks)
  8.      For Each a In Rng.Areas
  9.        Union(a, a.Offset(-1, 0)).Merge
  10.      Next
  11.     End If
  12.    Next
  13. End With
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 4# Hsieh

程式指令真的很厲害,只是多加一個判斷,即可將問題解決,感謝H大的指導
另有一個問題是,資料的行列不一定為19行
如果將Range("A1:G19"),改為Range("A:G"),會導致最後一筆將後面所有的空白儲存格都合併
是否有何指令可以先判斷出有多少行,再將數字帶入Range("A1:G?)內呢

TOP

回復 5# jcchiang
  1. Sub ex()
  2. Dim Rng As Range
  3. With Range("A1").CurrentRegion
  4. .UnMerge
  5.    For i = 1 To .Columns.Count
  6.    If Application.CountBlank(.Columns(i)) > 0 Then
  7.      Set Rng = .Columns(i).SpecialCells(xlCellTypeBlanks)
  8.      For Each a In Rng.Areas
  9.        Union(a, a.Offset(-1, 0)).Merge
  10.      Next
  11.     End If
  12.    Next
  13. End With
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# Hsieh

原本用CurrentRegion則可傳回由空白格子圍起來的一個範圍
目前問題已解決,再次感謝H大的指導

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題