網友問到:在 Excel 中有一個如下圖(上)的資料表,要轉換成下圖(下)的格式,該如何處理?參考下圖,上下兩個表格,是要把「進貨、銷貨、收發」由橫向轉換為直向。現在來看看要如何處理。
【公式設計與解析】
1. 查詢每月「期初」的值
儲存格C9:=SUMPRODUCT(($A$3:$A$6=$A9)*$B$3:$B$6)
透過 SUMPRODUCT 函數在儲存格A3:A6中比對和儲存格A9是否相同,傳回 TRUE/FALSE 陣列。
($A$3:$A$6=$A9)*$B$3:$B$6:其中「*」(乘法運算),相當於執行邏輯 AND 運算。
2. 找出每月「進貨、銷貨、收發」
儲存格C10:=SUMPRODUCT(($C$1:$K$1=C$8)*($C$2:$K$2=$B10)*
(OFFSET($C$2,MATCH($A10,$A$3:$A$6,0),0,1,9)))
MATCH($A10,$A$3:$A$6,0):利用 MATCH 函數找出儲存格A10的內容在儲存格A3:A6中的第幾個。
OFFSET($C$2,MATCH($A10,$A$3:$A$6,0),0,1,9):將上式的傳回傳代入 OFFSET 函數,用以傳回符合儲存格A10內容的資料範圍。例如:儲存格A10為「鱈魚」,則傳回儲存格C3:K3。
上式是一個動態範圍的公式寫法,應特別注意。再藉由:
(1) 條件一/$C$1:$K$1=C$8:查詢符合相同月份(一月、二月、三月)者。
(2) 修件二/$C$2:$K$2=$B10:查詢符合相同項目(進貨、銷貨、收發)者。
以上二式都會傳回 TRUE/FALSE 陣列。
透過 SUMPRODUCT 函數將符合「條件一、條件二」者,在 OFFSET 函數傳回的儲存格陣列中計算「乘積和」,即為這個品名的該月該項目的內容。

謝謝您的指導^^
老師您好,已將您指導的公式帶入後沒有帶出符合的資料,公式如下:=SUMPRODUCT((工作表2!$C$1:$AF$1=C$1)*(工作表2!$C$2:$AF$2=$B3)*(OFFSET(工作表2!$C$2,MATCH($A3,工作表2!$A$3:$A$100,0),0,1,30))) 煩請您指導,謝謝您。
您的公式應該是正確的,自行下載參考檔案。 https://www.dropbox.com/s/u4nigdjcw6nyxm2/%E6%A8%99%E7%A4%BA%E6%97%A5%E6%9C%9F%E5%B7%B2%E9%80%BE%E6%9C%9F%E8%80%85%28%E8%A8%AD%E5%AE%9A%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%9A%84%E6%A2%9D%E4%BB%B6%2CTODAY%29.xlsx?dl=0
不好意思,再請教您一個問題,您指導的這個公式如果是不同的工作表,設定的方式還是一樣嗎,是不是offset的height和width是不是要有不同的設法呢?
受用無窮!