2015-06-18 5 views
0

Первый раз постер. Я пытаюсь суммировать ячейки с ранее опубликованного рабочего листа, чтобы поддерживать подсчет количества лет до даты. Теперь, когда моя рабочая книга настроена, у меня есть данные за один год на каждом листе, а используемые данные - ежемесячные отчеты. Ежемесячные отчеты вставляются в рабочий лист «Шаблон». Затем данные из них упорядочиваются на временные ряды на отдельных листах, а имя для каждого из рабочих листов - это год, которому соответствуют данные. При добавлении новых данных в течение года я хотел получить итоговые итоги за год, чтобы сравнить аналогичные временные рамки. Вот как выглядит моя формула.Использование косвенного для поддержания годовых сумм с другого рабочего листа

=SUM(INDIRECT("'"&LEFT($A13,4)&"'!C17:OFFSET(C$16,MONTH(RIGHT(Template!C$3,10)))"))

LEFT($A13,4) ссылается на год я хочу вытащил в течение текущего рабочего листа, и MONTH(RIGHT(Template!C$3,10)) определяет число месяца для текущего отчета. Итак, на май 2015 года Left($A13, 4) вернет "2014", а MONTH(RIGHT(Template!C$3,10)) вернет значение 5.

Как я надеюсь, я попытаюсь начать свое суммирование в начале ежегодной серии, найденной на листе предыдущего года, а затем использовать OFFSET, чтобы вытащить только те месяцы, которые заканчиваются текущим отчетом месяц за этот год, чтобы внести изменения в год. Это возвращает #REF! в Excel, когда я пытаюсь это сделать. Первые впечатления показывают, что INDIRECT не распознает OFFSET как функцию и обрабатывает его как текст. Есть ли способ обойти это?

Я вижу, что нечто подобное было опубликовано ранее, но не удалось перевести на мою ситуацию. Любая помощь будет принята с благодарностью.

ответ

0

Трудно воспроизвести без данных, так что принять это за то, что это стоит ...

Сломать формулу вниз (один отличный аргумент в каждой строке), мы имеем

=SUM(
    INDIRECT(
    "'" 
    & 
    LEFT($A13,4) 
    & 
    "'!C17:OFFSET(C$16,MONTH(RIGHT(Template!C$3,10)))" 
) 
) 

означает строку, начинающуюся "'!C17:OFFSET(..., вероятно, рассматривается как текст Excel, так как он заключен в кавычки. Вы, вероятно, хотите

=SUM(
    INDIRECT(
    "'" 
    & 
    LEFT($A13,4) 
    & 
    "'!" 
    & 
    C17 
    & 
    ":" 
    & 
    OFFSET(C$16,MONTH(RIGHT(Template!C$3,10))) 
) 
) 

для того, чтобы накормить все синтаксис (', !, : и т.д.) INDIRECT как строки и все значения ячеек в качестве результатов формулы.

0

Спасибо, что нашли время, чтобы опубликовать ответ на мой вопрос. Я думаю, что я понял гораздо более эффективное решение моей проблемы, чем раньше предполагал. Вместо того, чтобы иметь только годовые рабочие листы с данными за один год, я вместо этого добавляю отчеты, добавленные в конце нового листа, со всеми временными рядами на листе под названием «Необработанные данные» со столбцом «А» новый рабочий лист, содержащий дату окончания месяца. Вот как выглядит моя формула для добавления новых отчетов на лист «Сырые данные».

=IF(AND(YEAR($A2)=YEAR(Template!$F$4), MONTH('Raw Data'!$A2)=MONTH(Template!$F$4)),Template!C$35," ") 

Template!$F$4 ссылается на дату найденную в отчете.

Мои годовые рабочие листы ссылаются на лист «Сырые данные», чтобы исключить необходимость использования функции INDIRECT. Для получения годовых данных за данные, найденные в столбце «C» «Сырьевые данные», вот моя формула.

=SUM(INDEX('Raw Data'!C:C,(MATCH(EOMONTH($A17,-12),'Raw Data'!$A:$A,0))):OFFSET(INDEX('Raw Data'!C:C,(MATCH(EOMONTH($A17,-13),'Raw Data'!$A:$A,0))),MONTH(RIGHT(Template!$F$4,10)),0)) 

EOMONTH($A17, -12) настроен всегда ссылаться в январе предыдущего года. Это будет OFFSET по номеру месяца, указанному в отчете, на который ссылается MONTH(RIGHT(Template!$F$4,10)) и суммируется.