
x.Range("c" & 200 & ":c" & 300).FormulaR1C1 = x.Range("c" & 150).FormulaR1C1
この式は 正しく番地をずらしてくれますが
x.Range("h" & 200 & ":ba" & 300).FormulaR1C1 = x.Range("h" & 150 & ":ba" & 150).FormulaR1C1
列を複数とると 番地が 飛びます(一つ置きのような)
そも、無理なんでしょうか? それとも、考え、記述にミスがある?
よろしくどうぞ
No.3ベストアンサー
- 回答日時:
横から失礼します。
kigoshiさんが提示されている画像は、HA150:BA150の値は、計算式ではなく文字列(aaa0001~aaa00045)
が設定されているのではないでしょうか。
その場合は、実行結果は、 kigoshiさんが提示されている画像の通りになります。
一方、質問者の方のシートの内容は、HA150:BA150には計算式が設定されていると推測されます。
(質問者の方が計算式か文字列かを明記していないので、正確には不明ですが・・・)
上記を確認するために、以下のような設定を行って、マクロを実行します。
A1:A300にa00001~a00300の文字列を設定する。
B1:B300にb00001~b00300の文字列を設定する。
C150に=A150を設定する。(a00150が表示される)(添付図の赤線で囲んだ箇所)
H150に=A150を設定する。(a00150が表示される)(添付図の赤線で囲んだ箇所)
I150に=B150を設定する。(b00150が表示される)(添付図の赤線で囲んだ箇所)
この状態で、
① x.Range("c" & 200 & ":c" & 300).FormulaR1C1 = x.Range("c" & 150).FormulaR1C1
② x.Range("h" & 200 & ":ba" & 300).FormulaR1C1 = x.Range("h" & 150 & ":ba" & 150).FormulaR1C1
を実行する。
①の結果は、以下のようになる。(添付図の青線で囲んだ箇所)
C200にa00200が表示される。
C201にa00201が表示される。
C202にa00202が表示される。
以降同様。(これは期待する結果である)
②の結果は、以下のようになる。(添付図の緑線で囲んだ箇所)
H200にa00200が表示される。
H201にa00202が表示される。(a00201を表示したい)
H202にa00204が表示される。(a00202を表示したい)
以降同様。(これは期待する結果でない)
I列も同じ現象が発生する。(これも期待する結果ではない)

お説の通りです。コピーは文字列でなく、セル計算式です。で、グリーンの列のようになる・・・が質問内容です。
なぜ列を複数とると、そうなるのか??です。
2列なら、一つ置き、3列なら3飛びなら、分からくないですが、どのような列数でも、一つ置き。???
仕様と言われればそれまでですが、まあ、バグですかねえ、
No.4
- 回答日時:
.FormulaR1C1(相対参照)ではなく、.Formula(絶対参照)にすれば、期待する結果が得られますが、それではだめなのでしょうか。
x.Range("h" & 200 & ":ba" & 300).Formula = x.Range("h" & 150 & ":ba" & 150).Formula
.FormulaR1C1を使用する前提での質問でしたら、無視してください。
No.2
- 回答日時:
Sub hhh()
Range("h" & 200 & ":ba" & 300).FormulaR1C1 = Range("h" & 150 & ":ba" & 150).FormulaR1C1
End Sub
このコードを実行すると図のようになりますが。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一昨日、重大なミスをしてしま...
-
異動して3ヶ月、毎日が辛いです
-
低レベルなミスの多い新人は見...
-
今日とあるお店で買い物をしま...
-
倉庫のピッキング作業をしてい...
-
入社2ヶ月、ミスばかり…
-
今日仕事休み、明日職場で怒ら...
-
ミスを隠す癖。 私には、ミスを...
-
ミスして信用ないから辞めるは...
-
就職して二ヶ月少々。ミスが怖...
-
言いやすい人のミスにはキツく...
-
入社2年目でミスが続きます
-
塾講師のバイト、ミスについて ...
-
信じられないミスをして逃げる...
-
レジの操作について
-
職場で・・・
-
責めたつもりはないのに…
-
しんどいです。 私の仕事ミスで...
-
仕事ができず嫌われている自分...
-
仕事が出来なさすぎて辛いです ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一昨日、重大なミスをしてしま...
-
異動して3ヶ月、毎日が辛いです
-
低レベルなミスの多い新人は見...
-
今日とあるお店で買い物をしま...
-
八潮市陥没事故 死因を調べると...
-
言いやすい人のミスにはキツく...
-
信じられないミスをして逃げる...
-
就職して二ヶ月少々。ミスが怖...
-
良いこと日記を書くと悪いこと...
-
仕事ミスした次の日行きたくな...
-
入社2ヶ月、ミスばかり…
-
ミスを隠す癖。 私には、ミスを...
-
スシローのバイト初出勤でめち...
-
入社2年目でミスが続きます
-
ミスして信用ないから辞めるは...
-
66男、56女夫婦をうまく使いた...
-
今日仕事休み、明日職場で怒ら...
-
倉庫のピッキング作業をしてい...
-
レジの操作について
-
ミスが多い時期って誰にでもあ...
おすすめ情報
自己レスですが
For i = 8 To 19
nitiasi.Range(Cells(st, i), Cells(en, i)).FormulaR1C1 = nitiasi.Range(Cells(150, i), Cells(150, i)).FormulaR1C1
Next i
とりあえず、こんな感じで済ませたのですが、なんかなあ??
仕様ですか??