Как суммировать данные в одном столбце на основе того же месяца в другом столбце с помощью макросов - PullRequest
3 голосов
/ 25 ноября 2008

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

например, у меня есть серия данных

A            B
2/10/2008    2
2/10/2008    3
4/10/2008    3
5/11/2008    4
5/11/2008    5

Я хочу, чтобы результат отображался в столбцах C и D следующим образом

C            D
Oct/08       8
Nov/08       9

Я очень благодарен, если кто-нибудь может мне помочь.

С уважением,

Tifu

Ответы [ 4 ]

4 голосов
/ 26 ноября 2008
    A           B       C   D       E       F
1   10/ 1/2008  24106   1   Oct-08  24106   8
2   10/31/2008  24106   7   Nov-08  24107   11
3   11/ 1/2008  24107   8   Dec-08  24108   6
4   11/30/2008  24107   3               
5   12/ 1/2008  24108   2               
6   12/ 2/2008  24108   4               

B1 =MONTH(A1)+YEAR(A1)*12
E1 =MONTH(D1)+YEAR(D1)*12
F1 =SUMIF(B$1:B$6,CONCATENATE("=",E1),C$1:C$6)

Мне пришлось преодолеть две проблемы, чтобы решить эту проблему. Во-первых, SUMIF может выполнять только прямое сравнение, он не может запустить функцию в исходном местоположении (за исключением функций диапазона, которые не являются функциями даты и времени), поэтому мне пришлось добавить столбец B. Столбец E является необязательным, его можно реализовать как часть формулы в F, но я оставил его независимым для иллюстративных целей. Во-вторых, SUMIF принимает строковый параметр, описывающий сравнение, поэтому я построил необходимую строку (это «= 24106» для F1) на лету.

1 голос
/ 27 ноября 2008

с использованием функций массива: С1:

=date(2008,small(month($A$1:$A$10),1),1)

С2:

=date(2008,small(month($A$1:$A$10),2),1)

щелкните правой кнопкой мыши по этим ячейкам и отформатируйте их как ммм / гг

D1:

=sum(if(month($C1)=month($A$1:$A$10),($B$1:$B$10),0))

убедитесь, что нажали ctrl-shift-enter, когда закончите написание этой формулы. затем скопируйте и вставьте его по мере необходимости.

0 голосов
/ 25 ноября 2008

Это можно сделать, используя обычные формулы Excel:

  • извлечение месяца из даты (некоторая функция Месяца)
  • затем выполните условную сумму (функция sumwhen (?)) Следующим образом:

    = SumWhen (A: B, ReferenceDate, B: B) (с ReferenceDate = C2 C3 и т. д.)

(Все, что у меня есть, это немецкий excel, и имена функций также переведены, так что имена моих функций могут быть отключены. Может быть, кто-то может проверить английский Excel и обновить при необходимости.)

0 голосов
/ 25 ноября 2008

Если вы не знакомы с VBA, я бы начал с записи макроса, делая то, что вы хотите, используя функцию промежуточных итогов в меню «Данные» (т.е. через интерфейс Excel).

После записи макроса вы можете посмотреть полученный код VBA и изменить его в соответствии со своими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...