関数としてFormulaR1C1を見てきましたが、これはどのように機能しますか? 行 1 列 1 としてインターネット上で言われていることは理解できますが、実際にどのように機能させるのでしょうか? FormulaR1C1を使用した結果はどうなりますか?
また、シートの特定のポイントから開始するように変更できますか、それとも常に R1C1 になりますか? では、それはFormulaR2C3でしょうか?
FormulaR1C1 は Formula と同じ動作をしますが、A1 注釈の代わりに R1C1 スタイルの注釈のみを使用します。A1 注釈では、次を使用します。
Worksheets("Sheet1").Range("A5").Formula = "=A4+A10"
R1C1 では、次のように使用します。
Worksheets("Sheet1").Range("A5").FormulaR1C1 = "=R4C1+R10C1"
行 1 列 1 には作用しません。対象のセルまたは範囲に作用します。列 1 は列 A と同じであるため、R4C1 は A4 と同じであり、R5C2 は B5 などです。
コマンドは名前を変更せず、対象のセルを変更します。R2C3 (C2 とも呼ばれます) の例:
Worksheets("Sheet1").Range("C2").FormulaR1C1 = "=your formula here"
vba の外で formular1c1 を使用する方法について、私のブログからの情報を次に示します。
数式を書き終えて、それをスプレッドシート全体にコピーし、すべてを書式設定したところで、参照を絶対にするのを忘れていたことに気付きました。すべての数式はセル B2 を参照する必要がありましたが、今ではすべてが異なるセルを参照しています。
1 つは B5、もう 1 つは C12、3 番目は D25 などを持っていることを考慮して、セルの検索/置換をどのように実行しますか?
簡単な方法は、参照スタイルを R1C1 に更新することです。R1C1 参照は相対位置で機能します。R は行、C は列を示し、R と C に続く数字は相対位置 ([ ] の間) または絶対位置 ([ ] なし) のいずれかです。
例:
何が問題なのですか?さて、この投稿の最初に最初の式を書き戻したとき、B2 は書き込んだセルの 4 行上のセル、つまり R[-4]C でした。上下にコピーすると、A1 参照が変更されますが、R1C1 参照は変更されません。スプレッドシート全体を通して、それは R[-4]C です。R1C1 参照スタイルに切り替えると、R[-4]C を R2C2 ($B$2) に置き換えることができ、単純な検索/置換を使用して、一気に実行できます。
.FormulaR1C1 の最も価値のある機能は、そのスピードです。たとえば、一部のデータをシートに入力する非常に大きなループがいくつかある場合と比較して、実行していることを .FormulaR1C1 フォームに変換できる場合。次に、たとえば myrange.FormulaR1C1 = "my specific formulaa" などの単一の操作は、目がくらむほど高速です (1000 倍高速になる可能性があります)。ループやカウントはありません - 高速で範囲を埋めるだけです。