返回列表 上一主題 發帖

[發問] 請問如何一次合併儲存格

[發問] 請問如何一次合併儲存格

各位大大好,

擷取1.PNG
2020-5-8 18:42



想請問如何操作EXCEL,將A欄的種類變成是像是E欄那樣的顯示方式呢?


再請各位協助,謝謝大家。

Sub 合併()
Dim T$, xR As Range, xH As Range
Application.DisplayAlerts = False
For Each xR In Range([A2], [A65536].End(xlUp))
    If xR <> T Then Set xH = xR: T = xR
    If xR(2) <> T Then Range(xH, xR).Merge
Next
End Sub
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

本帖最後由 gaishutsusuru 於 2020-5-9 11:51 編輯

回復 2# 准提部林


謝謝准提大大提供的巨集寫法。關於這個巨集是可以操作的,但因為我後面幾欄會有寫公式,但因為合併後原本的儲存格不會保留了,所以公式變成會讀不到值。因此想請問有沒有辦法合併後仍保留原本各儲存格的值呢?


另外想請教2個問題:
(1) 如果要復原成未合併之前的樣子,亦即從欄E變成是欄A那樣的話,該如何寫巨集呢?

(2) 如果是手動用合併儲存格去操作合併的話,如何做才能保留原來各個的儲存格呢?(因為我手動用跨欄置中,都會顯示只保留左上角的值)


再麻煩您抽空提供想法,謝謝您。

TOP

回復 3# gaishutsusuru

Sub 合併()
Dim R&, i&, xA As Range, xZ As Range, T$, xH As Range
R = [A65536].End(xlUp).Row
Set xA = Range("A2:A" & R)
Set xZ = Range("Z2:Z" & R) '借用z欄當合併格
xA.Copy: xZ.PasteSpecial xlPasteFormats  '複製格式到z欄
For i = 1 To xA.Count
    If xA(i) <> T Then Set xH = xZ(i): T = xA(i)
    If xA(i + 1) <> T Then Range(xH, xZ(i)).Merge
Next i
xZ.Copy: xA.PasteSpecial xlPasteFormats '複製格式到a欄
xA.Borders.LineStyle = 1 '加框線, 解除合併後仍保有框線
xZ.EntireColumn.Delete '清除z欄
End Sub

Sub 合併解除()
Range("A:A").UnMerge
End Sub

以後任何發帖要自行上範例檔, 免得別人還花時間做:
X0001.rar (7.7 KB)


=========================
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 4# 准提部林


謝謝准提大大的巨集。好的,下次發文前會附上檔案,謝謝您的提醒。

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題