分要分享一下取跨表動態取上期結存數的思路,實現統計月份期間和取上月期末數
工具/原料
熟悉EXCEL基本操作
具備一定的函式基礎,會使用到的公式主要有:text ,substitute,mid,cell,find,indirect,vlookup等
方法/步驟
6月份的結存數,在7月份中為期初數,思路如下:通過VLOOKUP公式來查詢上月份對應產品的期末數,公式在每個表中都要適用,所以引用的區域是要動態的,不需要每次修改公式,所以我們得觀察表格設定及維護的特點。本人覺得接下來的步驟才是分享的主要經驗:
通過觀察,每張工作表都是數字+月份的特色,我們通過Indirect公式來構建一個VLOOKUP查詢區域的動態區域,如‘6月'!A1:M100,在七月的庫存表就要引用六月的期末數,我們要取到“6月”,可以通過取7月的表名減1來實現,接下來是如何取到表名呢?
=CELL("FILENAME",A1)可以取到工作簿的名稱,來個例子給大家看下,圖可以看到,完整的工作表存放路徑,我們只要取到7月就可以了,7月前現有“]",通過FIND公式來查詢”]"的位置
=FIND("]",CELL("FILENAME",A1))查詢”]"公式結果
查到了,在41字元處,找到位置後,我們要表名取出來,使用MID函式可以達到這個目的
請看圖4,我們通過MID函式把表名取出來了,找到”]"位置後,往後一位是我們要的內容,所以+1,取的長度正常3就夠了,表名命名規則就是數字+月,例子中我們隨意用了15.
取到表名,我們要在取上月數,所以我們要把7改為6,那就是把月份取出來減1咯,請看下一步
圖5,取月份有多種方法,本例,採用SUBSTITUTE函式,將月份替換為空值“”,這樣就得到7,然後減去1,就可以得到6了,我們這麼辛苦將6取出來,就是為了在INDIRECT函式中使用它,構建一個動態的引用區域供VLOOKUP使用。請看下一步:
圖5已經取到數字6了,接下來通過INDIRECT來實現一個被VLOOKUP查詢的區域,引用工作表的路徑是‘6月'!A1,這是單個單元格的,區域就是6月'!A1:L1000,例子請看圖6,離目標只有最後兩步遠了咯
圖7我們可以看到,使用了VLOOKUP公式,查詢區域,就是紅色邊框的部分,用INDIRECT生成的區域,為了不去數到底在第幾列,我採用了COLUMN(K5)來代替,COLUMN()會產生所在單元格的列號,本例K5是我們的目標列號
VLOOKUP,查詢不到時,會產生N/A#,為了報表美觀,用IFERROR函式進行美化處理,如果錯誤就用0顯示,請見圖8的結果
注意事項
表名要由數字+月組成,公式可以直接複製不需要修改可直接使用,