🔶情境
有數個工作表、每個工作表代表一個月份
每個工作表都記載了不同產品和對應的數值
以最新月份為依據,把每個月份的數據合併在一起(非加總)
最新的月份是在B欄開始排列(倒序)
商品排序亦以最新月份的排序為依據
🔶方法1
前提︰每個月份的工作表名稱是有規律的,例如以合併後的欄標題命名,如「2月份銷售數量」等
在B2的儲存格輸入下記公式,再拉滿整個範圍便可
=VLOOKUP($A2,INDIRECT("'"&B$1&"'!A:B"),2,0)
🏴 INDIRECT("'"&B$1&"'!A:B")
由於B1的文字與工作表的名稱相同,所以可以直接當成工作表名稱,並同Indirect來連接,出來的效果就是︰'3月份銷售數量'!A:B
※如果工作表的名稱只有月份(3月),那就把B$1改成 SUBSTITUTE(B$1,"份銷售數量","")
利用Substitute,把多餘的文字去除便可以得到只有月份的名字,再用這個名字找到相應的工作表
🏴 VLOOKUP($A2,...,2,0)
把上面的範圍套用在Vlookup裡,便可以得到相應的結果
🔶方法2
前提︰這個方法是考慮到工作表名稱沒有規律,必須強行找出工作表的名字時才使用。
後設︰由於需要用到巨集函數,所以完成後需要用.xlsx(巨集)的方式儲存檔案。
先選擇公式>(已定義之名稱)定義名稱
在彈出的視窗裡輸入如下︰
名稱︰可以隨意輸入,會成為函數的名字,為了方便使用,這次會寫作「sheetname」
參照到︰=GET.WORKBOOK(1)
接下來和方法1的步驟1相同,輸入下記公式︰
=VLOOKUP($A2,INDIRECT("'"&MID(INDEX(sheetname,COUNTA($1:$1)-COLUMN()+1),FIND("]",INDEX(sheetname,COUNTA($1:$1)-COLUMN()+1))+1,255)&"'!A:B"),2,0)
唯一不同的是粗體的部分。
🏴 sheetname
定義名稱後,它可以讀取了這個活頁簿內的所有工作表。
🏴 COUNTA($1:$1)-COLUMN()+1)
由於輸出的欄是倒序(即3月、2月、1月),但工作表是順序(即1月、2月、3月),所以利用了Counta($1:$1),計算標題的數量,減掉儲存格的欄數,再+1(用以補回A欄不是月份的部分)
🏴 INDEX(sheetname,COUNTA...)
得知儲存格的欄數,就可以利用這個數字來找回相應的工作表數值(3月是B欄,即是2,但總欄數是4,4-2+1=3,就代表3月的工作表是第3張工作表),利用Index尋找第3張工作表的名稱。
🏴 FIND("]",...)
由於找出來的結果會把檔案名也一併輸出(即[活頁簿名稱.xlsx]工作表1名稱),所以把上面Index的部分放在Find,再找出「]」的位置
🏴 MID(INDEX(...),FIND(...)+1,255)
再用MID從中間開始擷取工作表名稱,由於要從「]」之後開始數起,所以要在FIND的部份加1來表示「]」之後的字元開始,而255是一個虛數,一般工作表不會有很長的字串。
🏴 VLOOKUP(...)
最後這部分與方法1相當,就是利用VLOOKUP和INDIRECT的方法,找出相應的工作表和對應的數值。
🔶方法3
這個方法是利用了Excel的合併彙算功能,再配合少許函數來輔助的。
開新的工作表,這個工作表是預備放彙算好的內容
選取A1(輸出結果的時候就會從A1開始)
選攝資料>(資料工具)合併彙算
在參照位址選擇每個工作表的每個範圍,並按下新增
※留意工作表的排序是按工作表名稱排序,輸出的時候也會按這個排序欄位(所以我的工作表名稱是按欄位排序命名,即是3月=1,2月=2,1月=1)
不想改變工作表名稱的話,可以在後面的步驟再用排序修改。
※加在彙算後才修改工作表名稱的話,由於排序不會改變,也不會有影響。
由於要用欄標題和列標題計算,所以要勾選頂讀列和最左欄
按下確定,就會跑出結果
輸出結果像這樣,會有兩個問題
第一是欄位沒有依計劃,由3月倒序排列,第二是最左欄的商品名並沒有依3月份的排序排序。
先解決第一個問題。(步驟8至13)
選取B欄至D欄,即是月份的欄位
選擇常用>(編輯)排序與篩選>自訂排序
在彈出的視窗裡,按下「選項」
選取「循列排序」後按確定
這時候,最左邊的排序方式應該可以選擇「列1」(即是欄標題的部分),右邊的順序則選擇「Z到A」
按下確定後就會看到欄位自動排列成倒序
現在解決最左欄的商品名並沒有依3月份的排序排序這個問題。
在旁邊的欄位輸入下記公式
=MATCH(A2,'3月'!A:A,0)
這個公式就是直接找出A欄的商品名在3月的工作表裡的排序。
把這個公式往下拉,令到每個商品的排序都跑出來。
再用這欄排序便可以。
具體的步驟可以從右上→左下,或者右下→左上選取,令到「白色」的選取儲存格是在E欄,選取時也不需要把標題選取。(這是因為我的E欄並沒有標題)
再按下排序與篩選,選擇由小到大排序
最後把用來查排序的這欄刪掉就可以了
題外話,如果商品名的排序沒有影響,還可以考慮同樞紐分析表來做,需要為每一頁的內容轉換成表格(如方法3有相似點),樞紐後要再勾選各個表格的內容這部分有點複雜。