Board logo

標題: [發問] 儲存格合併 [打印本頁]

作者: jcchiang    時間: 2013-3-8 11:57     標題: 儲存格合併

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


[attach]14310[/attach]
[attach]14309[/attach]
作者: Hsieh    時間: 2013-3-8 15:19

回復 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
複製代碼

作者: jcchiang    時間: 2013-3-8 15:46

回復 2# Hsieh
如果有連續2個要合併的,第二個會被會被第一個一併合併
[attach]14313[/attach]
Test4被Test3合併了
作者: Hsieh    時間: 2013-3-8 19:07

回復 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
複製代碼

作者: jcchiang    時間: 2013-3-11 10:24

回復 4# Hsieh

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

回復 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
複製代碼

作者: jcchiang    時間: 2013-3-11 11:06

回復 6# Hsieh

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)