アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
列を複数とると 番地が 飛びます(一つ置きのような)

そも、無理なんでしょうか? それとも、考え、記述にミスがある?

よろしくどうぞ

質問者からの補足コメント

  • 自己レスですが
    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

    とりあえず、こんな感じで済ませたのですが、なんかなあ??
    仕様ですか??

      補足日時:2024/03/20 13:57

A 回答 (4件)

横から失礼します。


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列も同じ現象が発生する。(これも期待する結果ではない)
「FormulaR1C1の 相対参照式のコ」の回答画像3
    • good
    • 0
この回答へのお礼

お説の通りです。コピーは文字列でなく、セル計算式です。で、グリーンの列のようになる・・・が質問内容です。
なぜ列を複数とると、そうなるのか??です。
2列なら、一つ置き、3列なら3飛びなら、分からくないですが、どのような列数でも、一つ置き。???
仕様と言われればそれまでですが、まあ、バグですかねえ、

お礼日時:2024/03/24 17:41

.FormulaR1C1(相対参照)ではなく、.Formula(絶対参照)にすれば、期待する結果が得られますが、それではだめなのでしょうか。



x.Range("h" & 200 & ":ba" & 300).Formula = x.Range("h" & 150 & ":ba" & 150).Formula

.FormulaR1C1を使用する前提での質問でしたら、無視してください。
    • good
    • 0

Sub hhh()


Range("h" & 200 & ":ba" & 300).FormulaR1C1 = Range("h" & 150 & ":ba" & 150).FormulaR1C1
End Sub

このコードを実行すると図のようになりますが。
「FormulaR1C1の 相対参照式のコ」の回答画像2
    • good
    • 0

xがどのようなオブジェクトなのか不明ですが、私の環境で全てのx.を外すとトビなく全部埋まります。

    • good
    • 0
この回答へのお礼

x は単なるシート名です。

”番地が 飛びます(一つ置きのような)”の 一文がまずかったようです。
セルに空白ができるのでなく、参照番地が 飛ぶということです
C1の内容が A2 なら C2の内容が A4 なる(本来は A3)ということ
C3=A6 となる。ということです。

そちら様のテスト結果は 如何でしょうか?

お礼日時:2024/03/21 21:52

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A