ellie
Lv 4
ellie asked in 電腦與網際網路軟體 · 9 years ago

excel合併儲存格VBA語法

各位大大:

1.工作表Sheet2是用VBA寫好的表格範例, 要用合併儲存格的方式變成工作表

[表格] 的型式

2.重點是各課店家數可能有增減,也就是列數不是固定的

VBA的語法要如何寫呢?請各位不吝指教,謝謝

http://www.funp.net/653320

3 Answers

Rating
  • Daniel
    Lv 7
    9 years ago
    Favorite Answer

    Sub TMerge() Dim R%, M1, M2, N

    M1 = 6

    N = [A65536].End(xlUp).Row

    Application.DisplayAlerts = False

    For R = 6 To N Step 3

    If Range("C" & R) = "" Then

    If Range("B" & R) = "" Then

    Range("A" & R).Resize(3, 4).Merge

    If Range("A" & R) <> "Total" Then

    M2 = R - 1

    Range(Cells(M1, 1), Cells(M2, 1)).Merge

    M1 = R + 3

    End If

    Else

    Range("B" & R).Resize(3, 3).Merge

    End If

    Else

    Range("B" & R).Resize(3).Merge

    Range("C" & R).Resize(3).Merge

    Range("D" & R).Resize(3).Merge

    End If

    Next

    Application.DisplayAlerts = True

    Range("A" & N).Resize(, 4).Borders(xlEdgeBottom).Weight = xlMediumEnd Sub

    試試看!

    2011-09-02 11:34:12 補充:

    If Range("A" & R) <> "Total" Then

    M2 = R - 1

    Range(Cells(M1, 1), Cells(M2, 1)).Merge

    M1 = R + 3

    End If

    修改為:

    If Range("B" & R - 3) <> "" Then

    M2 = R - 1

    Range(Cells(M1, 1), Cells(M2, 1)).Merge

    End If

    M1 = R + 3

  • ellie
    Lv 4
    9 years ago

    准大 :

    謝謝你每回都贊助點數 ^_^

    是否A.B.C.D欄都要以巨集去檢測再〔合併〕?

    就是將 Sheet2 變成〔報表〕的樣式

    Ans : 是的, 尤其店家數又不固定, 真不知如何寫!

    2011-09-02 17:16:37 補充:

    非常感謝Daniel大師的指導,可以了, 想再等等看是否還有其他大大不同的解法,可以多學一些!

  • 9 years ago

    For ellie 大:

    是否A.B.C.D欄都要以巨集去檢測再〔合併〕?

    就是將 Sheet2 變成〔報表〕的樣式?

    2011-09-01 12:43:01 補充:

    用do ~ loop 應可,這方法Kubi大比較上手,

    又之前幾個題都是Kubi大的程式碼,

    請 Kubi 大來答較有一致性,再一次麻煩您了!

    2011-09-02 12:28:09 補充:

    Daniel大的程式碼很簡潔也很快,

    目前是以預設每店家是三列,若非固定列數時,可能要再調整,

    另外第 141 ~ 146 列併在一起了,可能還須改一下,

    若每店家固定是三列,則此程式可以適用!

    2011-09-02 18:43:50 補充:

    For ellie 大:

    Daniel大的程式碼如果已合用,應即下最佳答,

    在此情形下應不會有人再提解法,因已有〔正解〕故!

Still have questions? Get your answers by asking now.