- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2015-7-22 14:01
| 只看該作者
回復 3# b31978
試試看- '一般模組程式碼
- Option Explicit
- Sub Ex()
- Dim Rng As Range, C As Range, S, Ar(), At(), i As Integer
- Set Rng = ActiveSheet.Range("A3")
- Do While Rng <> ""
- With Rng.Offset(, 2).Resize(Rng.MergeArea.Count, 7)
- 'Rng.MergeArea 儲存格的合併範圍
- 'Rng.MergeArea.Count 合併範圍的Cells總計
- If Application.CountA(.Cells) > 0 Then '.Cells :這 With 物件範圍Range的Cells
- '工作表函數 CountA 計算範圍內有資料的Cells個數
- For Each C In .SpecialCells(xlCellTypeConstants)
- 'SpecialCells 特殊儲存格 (xlCellTypeConstants :字串,數字 )
- ReDim Ar(1 To 4) '重置陣列
- Ar(1) = Rng.Value
- Ar(2) = Cells(2, C.Column)
- Ar(3) = C
- Ar(4) = Cells(C.Row, "j")
- i = i + 1
- ReDim Preserve At(1 To i) '重置陣列:Preserve保留原有的元素
- At(i) = Ar
- Next
- End If
- End With
- Set Rng = Rng.End(xlDown) '下一個有合併範圍的Range
- Loop
- If i > 0 Then [M3].Resize(i, 4) = Application.Transpose(Application.Transpose(At))
- End Sub
複製代碼 |
|