Как суммировать данные в одном столбце на основе того же месяца в другом столбце, используя макросы

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

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

AB 2/10/2008 2 2/10/2008 3 4/10/2008 3 5/11/2008 4 5/11/2008 5 

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

 CD Oct/08 8 Nov/08 9 

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

С уважением,

Tifu

  ABCDEF 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) на лету.

используя функции массива: C1:

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

C2:

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

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

D1:

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

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

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

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

Это можно сделать с использованием регулярных формул excel:

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

    = SumWhen (A: B, ReferenceDate, B: B) (с помощью ReferenceDate = C2 C3 и т. Д.)

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

Interesting Posts

Код VBA для открытия всех файлов excel в папке

Точные графические диаграммы событий процесса (например, в Excel)

Нужна помощь в преобразовании диапазона чисел в текст в excel

Обтекание текстом или автоматическая настройка ширины в столбце Excel с использованием ColdFusion

Запрос Excel из файла access.accdb на защищенном паролем сайте

VBA перебирает элементы через элементы и выбирает соответствующую строку и копирует в powerpoint

Вложенные макросы не зацикливаются

Динамическая формула, которая вычитает 2 значения ячейки на основе значений из 2 других ячеек

Получить условный режим эффективно в Excel

VBA Изменить код из MSG Box в Сводный отчет

VBA конвертирует файл Excel в текст при отправке почтового запроса

Как вернуть динамически созданные векторы в рабочую область?

VBA excel Workbook RefreshAll с параметром впоследствии

Как настроить параметры печати в C # с помощью interop

Неустранимая ошибка: исключение исключения «PHPExcel_Exception»

Давайте будем гением компьютера.