
初歩的な質問です。
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で質問しましょう!
似たような質問が見つかりました
- 工学 CR発振回路 C1=C2=C=0.001【uF】 R1=R2=R3=16【kΩ】 R4は出力電圧が正 2 2023/05/10 19:13
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- 物理学 写真の問題について質問なのですが、解説を見る限りc1とc2の電気量は等しくないように思えます。 しか 4 2023/07/01 21:41
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
デザイン時のVisible=Falseは実...
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
javascriptで最初のところに戻...
-
1つのVBAコードをすべてのコア...
-
Excelのマクロ一括実行ができな...
-
C#でボタン名を変更しても動く
-
eval()の危険性の具体例を教え...
-
JavaScriptでショートカットキ...
-
VisualStudio2008の最適化について
-
ラベルの色がかわってくれない
-
VBAマクロ、パスがありませんで...
-
以下のコードを実行しても、オ...
-
リクエスト結果が一瞬しか表示...
-
JavaScriptで初めてOOPを試した...
-
VBSかVBAでIE操作をする場合、...
-
初心者です。gulpでコンパイル...
-
jspで、javaを呼び出すときの引...
-
JavaScriptのsetTimeoutについて
-
PowerPointで時計表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
以下のコードを実行しても、オ...
-
PowerPointで時計表示
-
〔Excel:VBA〕マクロの実行が異...
-
デザイン時のVisible=Falseは実...
-
C#でボタン名を変更しても動く
-
if(1){...}とはどういうことで...
-
1つのVBAコードをすべてのコア...
-
リクエスト結果が一瞬しか表示...
-
VBA ステータスバー DoEvents
-
JavaScriptでショートカットキ...
-
VBA SORT Applyでエラー
-
既存のwebサイトで、ローカルの...
-
innerHTMLなどの反映タイミング
-
VB.netでタイマーがスタートし...
-
JavaScriptで、実行するたび値...
-
ラベルの色がかわってくれない
-
CreateFile、CloseHandleの繰り...
-
初心者です。gulpでコンパイル...
-
jQuery ui Datepicker 明日以降...
おすすめ情報