MS Excel UDF - Différence de séries temporelles

0

Je voudrais de l'aide pour manipuler des données s'il vous plaît. Donné:

i) Une plage "ORN" de dire "MaxR" lignes et "MaxC" colonnes; ii) et un entier i tel que 1

Je voudrais trouver le moyen le plus simple d’obtenir une nouvelle plage "nRng" de lignes "MaxR" et de colonnes "MaxC" dans laquelle:

Pour 1 <= r <= i et 1 <= c <= MaxCol:

nRng.Cells (c, r) .Value = NA ()

Pour i + 1 <= r <= MaxR et 1 <= c <= MaxCol:

NRng.Cells (c, r) .Value = ORng.Cells (c, r) .Value - ORng.Cells (c, ri) .Value

Je ne sais pas si le moyen le plus efficace de le faire consiste à utiliser une fonction de feuille de calcul intelligente que je n'ai pas encore trouvée ou à utiliser un fichier UDF (que je ne saurais pas coder).

Toute aide serait très appréciée. Merci beaucoup.

Andrew White
la source

Réponses:

0

Vous pouvez facilement obtenir votre résultat avec les fonctions de la feuille de calcul. Supposons que vos données se trouvent dans la feuille Sheet1, en commençant par A1, et qu'il existe une plage nommée "shift" à utiliser comme "i" dans votre question. Formule pour entrer en A1 d'une nouvelle feuille:
=Sheet1!A1-OFFSET(Sheet1!A1,-shift,0)

Máté Juhász
la source
Merci. Est-il possible d'implémenter cela en tant que fonction de tableau au lieu d'une fonction cellule par cellule?
Andrew White
Pourquoi pensez-vous qu'une fonction tableau serait meilleure? Si vous souhaitez remplir toutes les cellules en une seule fois, sélectionnez simplement votre plage, insérez la formule dans la première cellule et appuyez sur CTRL + ENTRÉE lorsque vous avez terminé.
Máté Juhász
La raison en est que j’ai des macros vba qui génèrent des graphiques et produisent des statistiques résumées qui utilisent des tableaux comme entrées. Bien que la raison officielle soit que j'ai lu que les fonctions de tableau sont plus rapides lorsqu'elles sont appliquées à une plage comportant beaucoup de lignes par rapport aux fonctions autres que de tableau calculées dans chaque ligne.
Andrew White
Désolé, je ne comprends toujours pas. la sortie d'une formule matricielle est la même plage que la sortie d'une formule standard. Essayez de chercher "convert range to array"
Máté Juhász
Donc, disons que j'ai des nombres sur toutes les cellules de la plage A1: B10. Si je remplis C1 avec les formules A1 + B1 et que je l’étends en C10, chaque fois que je modifie un élément de ma feuille de calcul, Excel effectue 10 calculs. Toutefois, si je rentre B1: B10 + A1: A10 sur les cellules C1: C10, Excel ne fera qu'un calcul à chaque recalcul ... sera significatif.
Andrew White