Excel 公式 - 預算結構化表 - 月視圖

Excel 公式 - 預算結構化表 - 月視圖

我一直在四處尋找,並努力尋找我的公式不起作用的原因。

在發布我的公式之前,我需要解釋一下我想要做什麼,它有點複雜(至少,這是我能想到的唯一方法)。

**背景**
我需要根據我部門的預算建立電子表格(按類別排序),目前當我從財務系統下載收入/支出時,它只會輸出按日期排序的資料行(原始資料)。

  • 目標1- 匯出的原始資料會自動分類,然後表格清楚地顯示每個類別花費了多少實現

  • 目標2- 將匯出的原始資料分類,並根據使用者的選擇僅顯示特定月份卡住


原始資料導出範例:

表:2015 年數據

Date    |  Description of Expense  |  Amount  |  Codes
Jan-15  |  Workshop for employee   |  100000  |  WRKS
Jan-15  |  Workshop for employee   |  100000  |  WRKS
Feb-15  |  Sponsors for employee   |  200000  |  SPON
Feb-15  |  Sponsors for employee   |  100000  |  SPON
Feb-15  |  Workshop for employee   |  300000  |  WRKS
Mar-15  |  Sponsors for employee   |  100000  |  SPON

如果我們使用上表作為我從財務系統匯出時得到的原始資料(名為「Data2015」)的範例(我將其轉換為 Excel 中的表格)。
我為實現目標 1 所做的就是建立一個包含類別描述的新表(名為「類別」)。

表:類別

Categories | Codes
Workshop   | WRKS
Sponsors   | SPON

然後建立另一個表格(名為“預算”),如下所示:

表:預算

Categories | Codes | Amount
Workshop   | WRKS  | 500000
Sponsors   | SPON  | 400000



我用於預算表上金額列的公式是

=SUMIF(Data2015[Codes],[@Codes],Data2015[Amount])

所以這個公式幫助我達成了目標 1。

為了實現目標 2,我嘗試了以下方法。

建立一個表格來捕獲使用者想要查看的月份:

表:條件

Month  | X | Background
Jan-15 | x | 1/01/2015
Feb-15 | x | 1/02/2015
Mar-15 | x | 1/03/2015

如果使用者想要查看該特定月份的費用,則可以在 X 欄中輸入「x」。
我在背景列中使用了這個公式:

=IF([@X]="x",TEXT([@Month], "d/mm/yyyy"),"")

然後我想像以前一樣將月份進一步過濾為類別。
與上面的類別表類似,但根據使用者想要查看的內容針對特定月份。
我設法讓它工作,但只適用於 1 行,而不是整個表。
我希望您檢查我的公式,並讓我知道我所做的可能是不正確的,甚至我實現目標 2 的邏輯是不正確的。您的見解將非常有幫助,對於非常混亂的情況,我深表歉意,我想不出更簡單的方法來解釋。

我創建了另一個電子表格,該電子表格將使用以下公式模仿 Data2015 工作表

=IF(ISNUMBER(SEARCH(Month_View!$D$5, $A5)),Data2015[@Account], IF(ISNUMBER(SEARCH(Month_View!$D$6,$A5)),Data2015[@Account],""))

月視圖!在哪表:條件位於,$D$5 為 Jan-15,$D$6 為 Feb-15,依此類推。
如果公式偵測到 A5(日期所在的欄位)與表:2015 年數據的日期列(在同一行,因此是 @)。

到目前為止,一切都很好,只要我在單元格 A5 中有“Jan-15”或“Feb-15”,它就可以工作。為了根據用戶的偏好填充此單元格,我使用了以下公式(它不會產生我想要的結果):

=IF(Condition[Background]=TEXT(Data2015[@Date],"d/mm/yyyy",Data2015[@Date],"")

所以對我來說,公式的目的是執行以下操作:
如果日期在2015年數據表格符合其中的日期/值之一(格式為“d/mm/yyyy”)狀態名為“背景”的列(僅當使用者在他們想要查看的月份中輸入“x”時才會顯示),然後用來自的值填充此單元格2015年數據的日期列。
如果單元格隨後填充“Jan-15”或“1/01/2015”,那麼表格的其餘部分將填充,然後我可以使用它,然後使用我用於實現目標 1 的公式按類別進一步過濾。

但儲存格並未填入“Jan-15”或“1/01/2015”,而是顯示空白或#VALUE!
似乎是參考了狀態有@的表也是我不想要的。

儘管令人困惑......如果您能理解我想要實現的目標,任何見解或討論都會有所幫助。也許我的大腦在這個階段太超負荷了。

答案1

我會使用 Excel 內建的表格功能 - 不需要公式。選擇您的範圍並按 Ctrl-T 開始。

這將打開頂行的過濾器 - 您/您的用戶可以使用它們按年和/或月過濾日期。

對於總計功能,新增總計行(使用表格工具/設計功能區),在該行中您可以選擇每列所需的聚合(總和、計數等)。這將自動調整以遵循您的篩選。

答案2

好吧,我已經解決了!

這是我使用的公式:

=SUM(SUMIF(Data2015BG1[Category],[@Codes],Data2015GB1[Amount]))

*PS:抱歉,如果參考文獻與我的問題中給出的範例不同。

Data2015BG1 工作表的公式可偵測“觸發器”列中是否有“x”,並根據所選月份顯示必要的資料。我使用的公式是:

=IF(ISNUMBER(MATCH(TEXT(Data2015[@Period],"d/mm/yyyy"),Condition2015A[Background],0))=TRUE,Data2015[@Period],"")

希望這是有道理的,我會發布圖片來準確地向您展示我在視覺上實現的目標,因為本質上我所做的是讓任何人都更容易使用,但我還沒有足夠的聲譽來發布圖像!下次吧。

過濾器本來可以工作,但我正在為那些幾乎沒有太多 Excel 經驗的人創建這個,所以即使要求他們進行過濾也有點過分(...我知道,我知道...)

相關內容