Я столкнулся с несколькими дискуссиями по использованию INDIRECT и 3D-ссылок, однако ни один из них не рассматривает (или не исправляет) эту проблему.EXCEL: подсчет рабочих листов динамически с помощью INDIRECT
Я пытаюсь подсчитать положение листа без использования VBA. Каждый лист представляет месяц и имеет стандартизованное имя (например, JAN-15, FEB-15, MAR-15 и т. Д.). Моя идея - найти позицию, посчитав количество листов между JAN-15 и текущим листом. A1 каждого листа = 1, который суммируется через листы, используя трехмерную ссылку.
Использование февраля в качестве примера, я могу жесткий код это не проблема:
= SUM ('JAN-15: февраль-15' A1!)
Когда я делаю это, я получаю ожидаемый результат 2. Однако я хочу, чтобы лист каждого месяца динамически генерировал свою позицию без необходимости менять формулу каждый раз. Так что я попытался это:
Cell назван FIRSTMONTH = 'JAN-15
Cell имени CURRMONTH = RIGHT (CELL ("FILENAME", A1), 6)
N1 = CONCATENATE ("'", FIRSTMONTH ": "CURRMONTH," '! A1")
(N1 оценивает правильно, как 'JAN-15: Февраль-15' A1)
Когда я пытаюсь эту формулу для создания позиции:
= SUM (НЕПРЯМЫЕ (N1))
Я получаю #REF! ошибка. Я также попытался это изменение:
= SUM (INDIRECT ("N1"))
который возвращает 0.
Любое имеет представление о том, как я могу получить эту работу? Или есть лучший способ, который не использует VBA?
-Давид
Я должен также упомянуть, что я использую Excel 2011 для Mac. Я заметил, что Excel 2013 имеет удобную функцию SHEET(), которая в основном делает именно то, что я хочу ... – dherman
Вы не можете использовать INDIRECT для «построения» формулы 3d - я предполагаю, что у вас есть листы в течение нескольких лет (или месяц начала может не быть Ян), в противном случае было бы достаточно использовать номер месяца, чтобы получить позицию –
Каждый год получает свою собственную книгу, и каждый начинается с JAN, поэтому ваше решение DATEDIF отлично работает. Спасибо за вашу помощь! – dherman