2010-08-26 8 views
1

Quelqu'un peut-il expliquer en anglais wtf cette formule est en train de faire? Je regarde le travail de quelqu'un d'autre et je n'en ai aucune idée.Que fait cette formule Excel?

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

Etes-vous sûr que les parenthèses sont correctes comme collé ci-dessus? Est-ce que la formule évalue à une erreur? –

+0

Vous manquez une virgule juste avant CurrentActualPeriod? – Icode4food

Répondre

1

Désolé, sans données Je ne suis pas mieux loti que vous. Je suggère de casser chacune des fonctions dans leur propre cellule afin que vous puissiez voir ce qu'ils retournent. Cela vous permettra de créer une sorte de pile d'appels pour que vous puissiez voir ce qui se passe. Juste en regardant cela, je suis sûr que cela pourrait être considérablement simplifié. Dans mes années de développement Excel, je ne me souviens pas avoir jamais eu recours à la fonction d'adresse. Offset est assez puissant et déroutant lorsqu'il est utilisé correctement. :-)

+0

Je viens de lire le fichier d'aide 'OFFSET'. Cela semble être assez déroutant! et je peux voir le pouvoir dedans ... – masher

3

En accord avec jeffreymb, vous pouvez également utiliser la fonction Evaluate Formula dans Excel pour parcourir les fonctions imbriquées une à la fois (si vous avez Excel 2007). Voici la documentation et une capture d'écran sur la façon dont cela fonctionne:

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

+3

si vous ne pouvez pas faire cela, alors mettez chaque niveau d'imbrication dans sa propre cellule, et référez-vous en même temps que vous construisez vos nids ... – masher

0

J'utilise les ADDRESS et INDIRECT fonctions assez souvent.

La formule fonctionne-t-elle réellement? Si c'est le cas, quelle version d'Excel utilisez-vous? Je ne peux pas l'obtenir pour fonctionner dans Excel 2003.

Pour moi, la fonction ADDRESS a trop peu d'arguments, et ceux là sont faux ...; il devrait être (quelque chose comme) ADDRESS(ROW(),21,1,1,1)

Le fait probablement référence à une plage nommée, et devrait probablement avoir une virgule devant elle.

Je ne peux pas faire beaucoup plus que cela atm ..

+0

Appuyé, je suis ici avec excel 2007 et ne peut pas le faire fonctionner non plus. – Jasper

0

En supposant que cette formule apparaît dans D4, puis:

= 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) = ? 

Le reste semble être une erreur de syntaxe, à moins qu'il ya un manque virgule avant CurrentActualPeriod.

La double indirection est sûrement confuse. Construire une adresse, obtenir une adresse de cellule à partir de là, l'utiliser pour un autre niveau d'indirection ... Ouch

+0

J'ai fait pire quand j'ai besoin d'une plage nommée extrêmement dynamique. Je voudrais déplacer horizontalement, verticalement et changer sa hauteur! – Icode4food