web-dev-qa-db-fra.com

Quelle est la fonction de FormulaR1C1?

J'ai regardé FormulaR1C1 en tant que fonction, comment cela fonctionne-t-il exactement? Je comprends ce qui a été dit sur Internet, à savoir la rangée 1, colonne 1, mais comment les gens y parviennent-ils? Quel est le résultat final d'utiliser FormulaR1C1?

De plus, peut-il être modifié pour commencer à un point spécifique d'une feuille, ou ce sera toujours R1C1? Alors pourrait-il être FormulaR2C?

42
Matt Ridge

FormulaR1C1 a le même comportement que Formula, n'utilisant que des annotations de style R1C1, à la place de l'annotation A1. Dans l'annotation A1, vous utiliseriez:

Worksheets("Sheet1").Range("A5").Formula = "=A4+A10"

Dans R1C1, vous utiliseriez:

Worksheets("Sheet1").Range("A5").FormulaR1C1 = "=R4C1+R10C1"

Il n'agit pas sur la ligne 1, colonne 1, mais sur la cellule ou la plage ciblée. La colonne 1 est identique à la colonne A, donc R4C1 est identique à A4, R5C2 est B5, etc.

La commande ne change pas de nom, la cellule ciblée change. Pour votre exemple R2C3 (également appelé C2):

Worksheets("Sheet1").Range("C2").FormulaR1C1 = "=your formula here"
40
user15741

Voici quelques informations de mon blog sur la façon dont j'aime utiliser formular1c1 en dehors de vba:

Vous venez de terminer l’écriture d’une formule, de la copier dans l’ensemble de la feuille de calcul, de tout mettre en forme et vous vous rendez compte que vous avez oublié de définir une référence absolue: chaque formule doit référencer la cellule B2, mais toutes font référence à des cellules différentes.

Comment allez-vous faire une recherche/remplacement sur les cellules, en considérant que l'une a B5, l'autre C12, la troisième D25, etc., etc.?

Le moyen le plus simple est de mettre à jour votre style de référence vers R1C1. La référence R1C1 fonctionne avec le positionnement relatif: R marque la ligne, C la colonne et les nombres qui suivent R et C sont des positions relatives (entre []) ou absolues (non []).

Exemples:

  • R [2] C se réfère à la cellule deux lignes en dessous de la cellule dans laquelle la formule est
  • RC [-1] fait référence à la cellule une colonne à gauche
  • R1C1 fait référence à la cellule de la première ligne et à la première cellule ($ A $ 1)

Qu'importe? Eh bien, lorsque vous avez écrit votre première formule au début de cet article, B2 était la cellule 4 lignes au-dessus de la cellule dans laquelle vous l'avez écrite, c'est-à-dire R [-4] C. Lorsque vous le copiez en travers et en bas, alors que la référence A1 change, la référence R1C1 ne le fait pas. Tout au long de la feuille de calcul, c’est R [-4] C. Si vous passez au style de référence R1C1, vous pouvez remplacer R [-4] C par R2C2 ($ B $ 2) par une simple recherche/remplacement et le faire en une fois.

23
nutsch

Je trouve que la caractéristique la plus précieuse de .FormulaR1C1 est sa rapidité. Par exemple, quelques très grandes boucles remplissant certaines données dans une feuille, si vous pouvez convertir ce que vous faites en un formulaire .FormulaR1C1. Ensuite, une seule opération, par exemple myrange.FormulaR1C1 = "mon formulaire particulier" est incroyablement rapide (peut être mille fois plus rapide). Pas de boucle ni de comptage - remplissez simplement la plage à grande vitesse.

2
StevieB