dポイントプレゼントキャンペーン実施中!

初歩的な質問です。
Range("M12:O12").FormulaR1C1 = Range("M11:O11").FormulaR1C1
Range("M13:O13").FormulaR1C1 = Range("M11:O11").FormulaR1C1
Range("M14:O14").FormulaR1C1 = Range("M11:O11").FormulaR1C1
Range("M15:O15").FormulaR1C1 = Range("M11:O11").FormulaR1C1
上記をまとめて、
Range("M12:O15").FormulaR1C1 = Range("M11:O11").FormulaR1C1
のようにすることは可能ですか?
まとめてコード実行すると、正確な数値が表示されないのですが。

A 回答 (2件)

No1です。



>FormulaLocal の「Local」は必要なものですか?
失礼いたしました。 調べたところ不要なようですね。
(A1形式はFormulaLocalと勝手に思い込んでいたので、認識を訂正できました)


ついでにもう少しテストしてみました。
(と言うか、観察してみただけですが・・)
セル範囲に代入すると「エクセルの自動調整機能」が悪さをするのかと思いましたが、必ずしもそうでは無いようです。
設定対象がセル範囲であっても
 Range("M11:M15").FormulaR1C1 = Range("M11").FormulaR1C1
であれば、正しく(=期待通りに)設定することができる様です。

仮に、M11:O11がR1C1形式で同じになる式だったとすると、
 Range("M11:O15").FormulaR1C1 = Range("M11").FormulaR1C1
のように平面的に設定しても正しく(=期待通りに)設定することができます。

どうやら、右辺が配列になった場合にご質問のような事象が起きる(=参照位置の調整が行われる)ようですね。
ご提示の、
 Range("M11:O15").FormulaR1C1 = Range("M11:O11").FormulaR1C1
だと、コピー方向である行方向で参照位置が2ずつずれることが起きます。
これを、例えば、
 Range("M11:O15").FormulaR1C1 = Range("M11:M15").FormulaR1C1
とすると、今度は列方向で同様の事象が発生しますね。

実行結果がどのように反応するのかはなんとなくわかりましたけれど、これをいかにうまく使いこなすかとなると、どうやら難しそうな気がしています。
    • good
    • 0
この回答へのお礼

再回答ありがとうございます。
ご説明で疑問のもやもやがすっきりしました。
毎回、丁寧な説明解説をいただき、感謝しております。

お礼日時:2023/07/17 07:31

こんにちは



R1C1形式はほとんど使わないのですが、試してみるとセルの行位置が2ずつ加わるような感じになってしまうようですね。
どういう仕組みなのか正確にはわかりませんけれど、R1C1で相対的な位置を参照している場合、セルが一つ下に移動すると、エクセルが招請で式の相対行位置を1小さくしますけれど、設定セル位置もずれているので、結果的に2ずれてしまうということなのかもしれません。
セル範囲に式を設定する場合、このような参照位置の調整が行われてしまうためかと想像します。
(R1C1形式の場合は、式を調整する必要がないのに、調整してしまうということの様です)

個別に式を設定すれば、自動調整は行われませんが、前半でご提示のような複数行になる記述になってしまいますね。(あるいはループで設定するか)


通常のフィルコピーした時と同じ結果をお求めということであれば・・
 Range("M11:O15").FormulaLocal = Range("M11:O11").FormulaLocal
とすれば、その様な結果になると思います。

フィルコピーをそのまま記述するなら、
 Range("M11:O11").AutoFill Range("M11:O15"), xlFillDefault
でも可能ですが、こちらの場合はコピーなので、式だけでなく書式等もコピーされます。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます。
>結果的に2ずれてしまう
やはりそうですか、私も2行ずれています。
R1C1形式の復習をしていて遭遇した状態です。
普段はご指摘の通り、私も
>Range("M11:O15").FormulaLocal = Range("M11:O11").FormulaLocal
こちらの方を使用しえいます。
FormulaLocal の「Local」は必要なものですか?

お礼日時:2023/07/16 19:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!