
初歩的な質問です。
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
のようにすることは可能ですか?
まとめてコード実行すると、正確な数値が表示されないのですが。
No.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
とすると、今度は列方向で同様の事象が発生しますね。
実行結果がどのように反応するのかはなんとなくわかりましたけれど、これをいかにうまく使いこなすかとなると、どうやら難しそうな気がしています。
No.1
- 回答日時:
こんにちは
R1C1形式はほとんど使わないのですが、試してみるとセルの行位置が2ずつ加わるような感じになってしまうようですね。
どういう仕組みなのか正確にはわかりませんけれど、R1C1で相対的な位置を参照している場合、セルが一つ下に移動すると、エクセルが招請で式の相対行位置を1小さくしますけれど、設定セル位置もずれているので、結果的に2ずれてしまうということなのかもしれません。
セル範囲に式を設定する場合、このような参照位置の調整が行われてしまうためかと想像します。
(R1C1形式の場合は、式を調整する必要がないのに、調整してしまうということの様です)
個別に式を設定すれば、自動調整は行われませんが、前半でご提示のような複数行になる記述になってしまいますね。(あるいはループで設定するか)
通常のフィルコピーした時と同じ結果をお求めということであれば・・
Range("M11:O15").FormulaLocal = Range("M11:O11").FormulaLocal
とすれば、その様な結果になると思います。
フィルコピーをそのまま記述するなら、
Range("M11:O11").AutoFill Range("M11:O15"), xlFillDefault
でも可能ですが、こちらの場合はコピーなので、式だけでなく書式等もコピーされます。
早速のご回答、ありがとうございます。
>結果的に2ずれてしまう
やはりそうですか、私も2行ずれています。
R1C1形式の復習をしていて遭遇した状態です。
普段はご指摘の通り、私も
>Range("M11:O15").FormulaLocal = Range("M11:O11").FormulaLocal
こちらの方を使用しえいます。
FormulaLocal の「Local」は必要なものですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
リクエスト結果が一瞬しか表示...
-
以下のコードを実行しても、オ...
-
1つのVBAコードをすべてのコア...
-
if(1){...}とはどういうことで...
-
ACCESS(VBA)の検索結果判定に...
-
デザイン時のVisible=Falseは実...
-
エクセルVBA/ Formatで文字列が...
-
csvファイルを読み込み、該当項...
-
フォルダ内のファイル一覧
-
正整数の半角数字かどうか判定する
-
javascriptでフォルダ内のファ...
-
正規表現について
-
漢字などを正規表現でパターン...
-
文字数の制限について
-
htmlのfileタグに自動で値を入...
-
全角カタカナ バリデーション...
-
動的ファイルの最終更新日を取...
-
C#でTextBoxに数値のみ入力可能...
-
ホームページビルダーでスクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
以下のコードを実行しても、オ...
-
リクエスト結果が一瞬しか表示...
-
VBA ステータスバー DoEvents
-
1つのVBAコードをすべてのコア...
-
if(1){...}とはどういうことで...
-
C#でボタン名を変更しても動く
-
デザイン時のVisible=Falseは実...
-
PowerPointで時計表示
-
VBA SORT Applyでエラー
-
〔Excel:VBA〕マクロの実行が異...
-
F8のステップインで実行すると...
-
innerHTMLなどの反映タイミング
-
[Delphi7] TWebBrowserでexecSc...
-
初心者です。gulpでコンパイル...
-
VB.netの重複データ数カウント...
-
VB.netでタイマーがスタートし...
-
再帰呼び出しになってしまうの...
-
JavaScriptでショートカットキ...
-
列を非表示にするマクロが実行...
おすすめ情報