Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
計算式にrow関数を入れたい
投稿日時: 20/10/20 12:57:02
投稿者: ip8bk

下記のコードの右側のR11を相対参照にしたいのですが、理由があって[]を使うことができません。
18〜20行目のそれぞれの行から7を引いた行、という計算式にしたいのですが、実現可能でしょうか?
 

Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R11C[-12]*R11C[-13]"

 
 
R11を「R&row()-7」にしたいですが、どのように記述したら良いでしょうか?
 
18行目の場合は
Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R11C[-12]*R11C[-13]"[/code]
 
19行目の場合は
Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R12C[-12]*R12C[-13]"[/code]
 
20行目の場合は
Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R13C[-12]*R12C[-13]"[/code]

回答
投稿日時: 20/10/20 14:03:07
投稿者: sk

引用:
18〜20行目のそれぞれの行から7を引いた行、という計算式

引用:
18行目の場合は
Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R11C[-12]*R11C[-13]"

Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R[-7]C[-12]*R[-7]C[-13]"
 
引用:
下記のコードの右側のR11を相対参照にしたいのですが、
理由があって[]を使うことができません

列の指定では使用しているのに、行の指定では使用することが出来ない、
というのは一体どのような理由からなのでしょうか。

投稿日時: 20/10/20 14:18:40
投稿者: ip8bk

簡単にご説明させていただきます。
11-17行目までに行が複数行追加するケースがあるからです。
追加されたときは下記のコードでは成立しません。
 
 Range(Cells(18, 15), Cells(20, 15)) = "=RC[-13]/R[-7]C[-12]*R[-7]C[-13]"
 
列は追加されることはないので、[]が使用できます。

回答
投稿日時: 20/10/20 15:44:45
投稿者: sk

引用:
11-17行目までに行が複数行追加するケースがあるからです。

それは数式を設定する前の話なのか、
数式を設定した後の話なのか、どちらなのでしょうか。
 
仮に後者だとして、例えば 11 行目と 12 行目の間に 1 行挿入された場合、
A1 形式なら O20:O21(挿入前は O19:O20 )の、
R1C1 形式なら R19C15(挿入前は R18C15 )の各数式が
自動的に修正される(参照先のセルは挿入前と変わらない)わけですが、
数式セルより上の行が挿入されようが削除されようが、
その数式セルから見て常に 7 つ上の行のセルを参照するようにしたい
ということでしょうか。

回答
投稿日時: 20/10/20 18:34:32
投稿者: mattuwan44

>R11を「R&row()-7」にしたいですが、どのように記述したら良いでしょうか?
 
その式を入力する操作を、マクロの記録で探ってみてはいかがでしょうか?

投稿日時: 20/10/23 12:30:55
投稿者: ip8bk

ご回答いただきました皆様ありがとうございました。
結局、別の方法にて解決いたしました。
情報が少ない中でご回答いただき誠にありがとうございました。
 
今回は、行が増える法則を見つけ出し、そこから任意の行を導きだす方程式を作成し、解決に至りました。
このような独自性のある質問は、短時間で正確にお伝えすることがとても難しく感じ、明確な情報が少なすぎたこと多々反省いたしました。
 
最後にmattuwan44 さんに質問させていただきますが、「式を入力する方法はマクロ自動記録で探る」とありますが、どのような方法がありますでしょうか?
今回の場合は、マクロの記録では難しいと認識しております。

回答
投稿日時: 20/10/23 18:11:16
投稿者: チオチモリン

よくわかりませんが
 
>R11を「R&row()-7」にしたい
 
R11C[-13] → OFFSET(RC,-7,-13)
ということでしょうか?
 
>11-17行目までに行が複数行追加
された時も
>Range(Cells(18, 15), Cells(20, 15))
なのでしょうか?

投稿日時: 20/11/09 08:44:18
投稿者: ip8bk

ありがとうございました。
とても勉強になりました。