馬尼 asked in 電腦與網際網路軟體 · 1 decade ago

EXCEL sheet 合併問題

各位先進大家好

小弟我有一個EXCEL的資料處理問題想要請教

我有一個EXCEL檔案

有非常多個sheet

名稱都是訂單的單號

每個sheet都有同樣位置欄位 A1:F1

但每個sheet的資料列數都不盡相同

我想請問有沒有什麼方法可以將這些sheet裡的資料

排在同一個sheet裡面啊?(假設這個sheet名字叫做 all)

雖然在知識爬了些文,感覺狀況好像都不盡相同

也一直沒辦法解決, 希望有前輩們能幫我解惑

感激不盡

3 Answers

Rating
  • Trump
    Lv 7
    1 decade ago
    Favorite Answer

    首先要謝謝發問者提出好問題,對很多使用 Excel 者來說,這是經常需要的工作項目之一。

    在 Excel 中如將第一張工作表(筆者所示範之工作表名稱為 merge)以外的所有工作表內容,合併到第一張工作表中。

    接下來要特別謝謝 oobird 前輩如此神奇使用相當簡短的 VBA ,便解決了這個問題。

    (筆者加入一些自己想要的程式碼)

    關於 oobird 的程式碼可參閱:ExcelHolme

    原始資料如下:

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/01.gif

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/02.gif

    步驟一:

    1. 滑鼠移到 merge 工作表名稱上,按滑鼠右鍵

    2. 選「檢視程式碼」

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/03.gif

    步驟二:

    1. 假如看不見右側「專案 - VBAProject」視窗,請執行「檢視\專案總管」

    2. 選取「專案 - VBAProjec」視窗中「Sheet1 (merge)」工作表

    3. 在右側「程式碼」視窗中,輸入以下兩段程式碼:

    Private Sub CommandButton1_Click()

    Dim i%

    For i = 2 To Sheets.Count

    Sheets(i).UsedRange.Offset(1, 0).Copy [a65536].End(xlUp).Offset(1, 0)

    Next i

    MsgBox "合併完成"

    Range("A4").Select

    End Sub

    Private Sub CommandButton2_Click()

    Range("A4").Select

    Range(Selection, Selection.End(xlDown)).Select

    Range(Selection, Selection.End(xlToRight)).Select

    Selection.Clear

    MsgBox "清除資料完畢"

    Range("A4").Select

    End Sub

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/04.gif

    步驟三:

    1. 按 Alt + F11 回工作表

    2. 點選 merge 工作表

    3. 檢視\工具列\控制工具箱

    4. 按「控制工具箱」工具列上「設計模式」按鈕 ,再按「控制工具箱」上之「指令按鈕」按鈕(如下圖所示)

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/05.gif

    步驟四:

    1. 在 1~2 列之間繪製如下圖所示之「指令按鈕」物件

    2. 點選該按鈕物件

    3. 按下「控制工具箱」上「屬性」按鈕

    4. 可以更改「 Caption」項目中的標題文字,如「按我合併」文字(完成之後如步驟五所示)

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/06.gif

    步驟五:

    下圖為完成 CommandButton1 之指令按鈕圖片

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/07.gif

    步驟六:

    再建立一個「按我清除合併」之指令按鈕,如下圖所示:

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/08.gif

    步驟七:

    當兩個按鈕都完成之後,一定要按「結束設計模式」按鈕,否則使用者將無法按下這兩個按鈕

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/09.gif

    步驟八:

    當使用者按下「按我合併」之後,除 merge 工作表以外之所有工作表將會被合併至此張工作表,合併完成之後會出現「合併完成」之訊息盒;

    圖片參考:http://gtfi.myweb.hinet.net/1607080806527/10.gif

    2007-08-09 06:54:59 補充:

    範例檔下載:

    http://gtfi.myweb.hinet.net/1607080806527.zip

  • 1 decade ago

    請開啟你的檔案後,點選上方工具列之”工具>巨集>visual basic編輯器>插入>模組”

    再將下段資料複製貼至模組中,貼上後先將檔案存檔

    執行彙整巨集時,點選上方工具列之”工具>巨集>彙整資料用>執行”

    ===========================

    Sub 彙整資料用()

    '

    '

    路徑變數 = ActiveWorkbook.Path '檔案存取路徑

    工作表變數 = Sheets.Count '計算工作表數量

    Sheets("all").Select '選取名稱為all 的工作表

    For i = 2 To 工作表變數 '請將”ALL”工作表移至第一張工作表的位置

    Sheets(i).Select

    Range("b65536").End(xlUp).Select

    筆數變數 = Selection.Row

    Range("A2:A" & 筆數變數).Select

    Selection.Copy

    Sheets("ALL").Select

    Range("b65536").End(xlUp).Select

    Range("A" & Selection.Row + 1).Select

    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

    False, Transpose:=False '僅貼上值

    Next i

    ActiveWorkbook.Save '以原有檔名存檔

    End Sub

    ===========================

    試試看..

    有問題:我的e-mail : jokecheng.tw@yahoo.com.tw

    Source(s): 自己
  • 1 decade ago

    訂單工作表有很多個,用複製貼上會很累,但因各工作表的欄位數是相同的,建議你匯入access會較省事(完工後可再匯出為excel);值得注意的是,若各工作表的列數相加超過65536列,便不能使用excel(單一工作表以256欄、65536列為限)。

    Source(s): 自己
Still have questions? Get your answers by asking now.