Что делает эта формула Excel? - PullRequest
1 голос
/ 26 августа 2010

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

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

Ответы [ 4 ]

3 голосов
/ 26 августа 2010

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

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

1 голос
/ 26 августа 2010

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

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

0 голосов
/ 26 августа 2010

Предполагая, что эта формула появляется в D4, тогда:

= 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.

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

0 голосов
/ 26 августа 2010

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

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

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

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

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

...