2013-04-07 19 views
0

我一直在試圖建立一個現金流量報表在Access 2007這將在Excel中使用公式如在同一個表計數列

= SUM (B6:M6)/CountIF(B6:M6)>0 

那麼容易做,但我似乎無法總結我的頭當涉及到訪問時圍繞此。我需要爲每個我們輸入數據的公司提供這方面的信息。現金流量報表應該是這樣的(因爲我還不能發佈,PIC):

 
---------------------------------------------------------------------------------------------------------------- 
Particulars | Jan | Feb | Mar | Apr | Jun | Jul | Aug | Sep | Oct | Nov | Dec | Average | 
Sales----------------------> 
Salary------> 
Transportation-----> 

和行約10等項目,全部用至十二月,不過,有時我們把條目一月6個月的數據,有時候是12個月的數據。 (想象一下基本的Excel表格,第一列中的項目和下一個12-13列的標題)。

在訪問中,我爲每個包含列的項目製作了表格,例如。 tblRcpt - > | rcpt_ID | Jan | Feb | ...依此類推,直到所有項目的dec。然後,他們將被安排並呈現在設計上看起來類似於上表的報名表中,而後來我將查詢並將它們連接在一起以呈現完整的現金流量表。

現在問題來了,我需要平均在一起的列(你可以在最右邊的列中看到),但我只希望這幾個月已填寫(有時在會計人在一起平均輸入「0」沒有數據的地方),所以我不能將列總和除以12。它必須是動態的,所有功能似乎都圍繞着計算和平均ROW而不是COLUMN。

感謝您對我的支持和閱讀,任何幫助將不勝感激。

+0

你遇到麻煩的原因因爲數據庫是**不是電子表格。你的結構沒有被標準化,並且SQL語句對於非規格化表格不能很好地工作。 – Yuck 2013-04-07 17:39:28

回答

1

試試這個

(Jan + Feb + ... + Dec)/
    (case when Jan = 0 then 0 else 1 end 
    + case when Feb = 0 then 0 else 1 end 

    + case when Dec = 0 then 0 else 1 end) 
as Avg 
+0

我會試試,但我應該在哪裏輸入VBA?我應該在表單中做這些事情,然後將結果存儲在表格中嗎? – Aadn 2013-04-08 04:32:30

+0

我試過了Case方法,但無法獲得正確的語法。所以我在所有的月份都使用了簡單的IF,else語句。謝謝一堆! :-) – Aadn 2013-04-10 13:36:01

1

你的表結構應該是:

Particulars | Month | Amount 
Sales   1  500 
Sales   2  1000 
Salary  1  80000 

...等等。您可以輸入行,當你沒有該月的值,也可以在SQL語句處理它們(因爲我有如下):

SELECT Particulars, AVG(Amount) AverageAmount 
FROM MyTable 
WHERE NULLIF(Amount, 0) IS NOT NULL 
GROUP BY Particulars; 
+0

我知道當我不得不爲每個項目製作如此多的單獨表格併爲所有項目重複12個月的列時出現了問題。但我不確定你建議的結構是如何工作的?你認爲我應該把monhts作爲外鍵嗎?我試圖在訪問中做到這一點,因爲會有數百個公司的現金流量報表需要由前端的幾個用戶在這裏輸入。你能否詳細說明一下? – Aadn 2013-04-08 02:47:59