2010-08-26 2 views
1

Может кто-нибудь объяснить на английском языке, что эта формула делает? Я смотрю на чужую работу и понятия не имею.Что делает эта формула Excel?

=SUM(OFFSET(INDIRECT((ADDRESS(ROW(),21)),0,0,1)CurrentActualPeriod)) 
+0

Вы уверены, что круглые скобки правильные, как указано выше? Вызывает ли формула ошибку? –

+0

Вы не прокомментировали запятую перед 'CurrentActualPeriod'? – Icode4food

ответ

1

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

Просто взглянув на это, я уверен, что его можно было бы существенно упростить. В годы моей разработки Excel я не помню, чтобы когда-либо приходилось обращаться к функции Address. Смещение довольно мощное и запутанное при правильном использовании. :-)

+0

Я просто прочитал файл справки 'OFFSET'. Кажется, это довольно запутанно! и я могу видеть силу в ней ... – masher

3

Соглашаясь с jeffreymb, вы также можете использовать функцию Evaluate Formula в Excel для поочередного выполнения вложенных функций по одному (если у вас есть Excel 2007). Вот документация и скриншот того, как это работает:

http://office.microsoft.com/en-us/excel-help/evaluate-a-nested-formula-one-step-at-a-time-HP010066254.aspx

+3

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

0

Я использую ADDRESS и INDIRECT функции довольно часто.

Действительно ли эта формула работает? Если да, то какую версию Excel вы используете? Я не могу заставить его работать в Excel 2003.

Для меня функция ADDRESS имеет слишком мало аргументов, а те, которые ошибаются ...; это должно быть (что-то типа) ADDRESS(ROW(),21,1,1,1)

CurrentActualPeriod, вероятно, относится к именованному диапазону и, вероятно, должен иметь перед ним запятую.

Я не могу сделать гораздо больше, чем это атм ..

+0

Прикомандированный, я здесь с excel 2007 и не может заставить его работать. – Jasper

0

Если предположить, что эта формула появляется в Д4, то:

= SUM(
     OFFSET(
      INDIRECT(
       (
        ADDRESS(
         ROW(),21 
        ) 
       ),0,0,1 
      ) 
      CurrentActualPeriod 
    ) 
) 

ROW() = 4 

ADDRESS(4,21) = $U$4 

INDIRECT($U$4) = take contents of $U$4, use as address, and get that cell's value 

OFFSET(..., 0, 0, 1) = ? 

Остальные, кажется, ошибка синтаксиса, если нет недостающий запятая перед CurrentActualPeriod.

Двойное косвенное отношение, безусловно, сбивает с толку. Создайте адрес, получите адрес ячейки оттуда, используйте его для ДРУГОГО уровня косвенности ... Ouch

+0

Я делал хуже, когда мне нужен чрезвычайно динамический именованный диапазон. Я бы двигался горизонтально, вертикально и менял его высоту! – Icode4food

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