Board logo

標題: [發問] 請問:將三個表格合併在一個表格裡 [打印本頁]

作者: gaishutsusuru    時間: 2019-11-27 17:11     標題: 請問:將三個表格合併在一個表格裡

大家好,想請問如何將「三個工作表表格的資料」合併在一個表格裡,詳細說明如下:

工作表:X1
[attach]31464[/attach]
有4個號碼(沒有照順序排序),及對應的小計值
(實際上的筆數,不固定。例子僅以4筆為例)

工作表:X2
[attach]31465[/attach]
有4個號碼(沒有照順序排序),及對應的小計值
(實際上的筆數,不固定。例子僅以4筆為例)

工作表:X3
[attach]31466[/attach]
有3個號碼(沒有照順序排序),及對應的小計值
(實際上的筆數,不固定。例子僅以3筆為例)

工作表:總表
[attach]31467[/attach]
希望呈現出:
(1) 將X1~X3的號碼按順序排列
(2) X1的小計值,會放在X1的欄底下
(3) X2的小計值,會放在X2的欄底下
(4) X3的小計值,會放在X3的欄底下
(5) 並將X1~X3小計值加總後,放在合計

關於排序之前有發文:「請問如何將文字轉成值,並排序?」,但先前只適用處理單一的工作表。
目前是想將X1~X3的號碼,合併在總表裡,並以如圖的方式呈現。

最後附上EXCEL檔案如下,謝謝。
[attach]31471[/attach]

再請各位大神幫忙協助提供想法,非常感謝。
作者: 准提部林    時間: 2019-11-30 12:27

Sub TEST()
Dim Arr, Brr, xD, i&, j&, R&, C&, U&, T$
Sheets("總表").UsedRange.Clear
Set xD = CreateObject("Scripting.Dictionary")
ReDim Brr(1 To 2000, 1 To 99)
Brr(1, 1) = "號碼"
For i = 1 To Sheets.Count
    If Left(Sheets(i).Name, 1) <> "X" Then GoTo i99
    C = C + 1: Brr(1, C + 1) = Sheets(i).Name
    Arr = Sheets(i).UsedRange
    For j = 2 To UBound(Arr)
        T = Arr(j, 1): If T = "" Then GoTo j99
        U = xD(T)
        If U = 0 Then R = R + 1: U = R: xD(T) = R: Brr(U + 1, 1) = T
        Brr(U + 1, C + 1) = Brr(U + 1, C + 1) + Arr(j, 2)
j99: Next j
i99: Next i
With Sheets("總表").[a1].Resize(R + 1, C + 2)
     .Columns(1).NumberFormatLocal = "@"
     .Value = Brr
     .Sort Key1:=.Item(1), Order1:=xlAscending, Header:=xlYes
     .Columns(C + 2) = "=SUM(RC[-" & C & "]:RC[-1])"
     .Rows(R + 2) = "=n(SUM(R[-" & R & "]C:R[-1]C))"
     .Cells(1, C + 2) = "合計": .Cells(R + 2, 1) = "合計"
     Union(.Rows(1), .Rows(R + 2), .Columns(C + 2)).Font.Bold = True
End With
End Sub

[attach]31480[/attach]


=============================
作者: kaigan89    時間: 2019-12-1 17:20

回復 2# 准提部林


    太高了!佩服!佩服!
作者: gaishutsusuru    時間: 2019-12-2 22:37

回復 2# 准提部林


    謝謝准提大大提供的方法,非常謝謝您。:)




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