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.

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)


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.