2013-04-07 7 views
0

Я пытался разработать Отчет о движении денежных доступа 2007. Это будет так легко сделать в Excel с помощью формул, таких какПодсчет столбцов в одной таблице

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

, но я не могу показаться, чтобы обернуть мою голову вокруг этого, когда дело доходит до доступа. И мне это нужно для каждой компании, в которую мы вводим данные. Заявление денежного потока должно выглядеть следующим образом (Поскольку я еще не могу опубликовать ПИК):

 
---------------------------------------------------------------------------------------------------------------- 
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», где нет данных), поэтому я не могу просто суммировать столбцы и делить на двенадцать. Он должен быть динамичным, все функции, похоже, сосредоточены вокруг подсчета и усреднения строк, а не COLUMN.

Благодарим вас за то, что вы считаете, что с моей стороны, и прочитав это, любая помощь будет очень признательна.

+0

Причина у вас возникли проблемы в потому что база данных ** не является ** электронной таблицей. Ваша структура не нормализована, а инструкции SQL не работают с денормализованными таблицами. – Yuck

ответ

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

+0

Я пробовал метод Case, но не смог правильно получить синтаксисы. Поэтому я использовал простую инструкцию IF, else за все месяцы. Огромное спасибо! :-) – Aadn

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 месяцев колонки для всех них. Но я не уверен, как работает структура, которую вы предложили? Думаете ли вы, что я должен делать монахи как иностранный ключ? Я пытаюсь сделать это доступным, потому что будут сотни заявлений о движении денежных средств компании, которые нужно будет вводить здесь несколькими пользователями из передней части. Не могли бы вы рассказать немного? – Aadn

Смежные вопросы