|
小僧 さん。
返信ありがとうございます。
わかりにくい説明ですいません。
質問を提示頂いたものからお答えします。
>1) 選択範囲内の処理という事で良いのでしょうか。
選択範囲内の処理で考えています。
>2) B5 のような扱いはどうなさいますか。
B5、あるいはC1のように、列の頭や尻で、
その前あるいは後を補完しようはないものは、無視するように考えています。
>3) C 列の基準が解りません。
ごめんなさい、気づきませんでしたが、
Cには5行目移行に数字があります。
その数字に対して、補完しあっています。
なので、私が提示した例では、C列は補完されません。
>4) C 列にもう一つ数字が入った際、C1に関しては補完しないのでしょうか。
2番の質問と同様ですが、列を上から見ていったとき(C1、C2、C3と値をひろっていったとき)、
一番、最初の値が入ったセル(この場合は4)以前は補完しません。
>等、色々と解らない事があるのですが…。
本当に、すいません。。。
なお、最初に書いたコードには、間違いがあって、
For j = minR.Row + 1 To maxR.Row - 1 ←2のはず
minR.Offset(k, 0).Value = minR.Value + tmpN * k
k = k + 1
Next j
でした(ちょっと混乱しています。なので、オブジェクト変数を使ったふたつめのコードに書き直してみました。まじめにテストできてないですが。)。
なので、例示した、B4が7から6.99にかわっているのは間違いになります。
流れとしては、
1. 行のデータが一番最初に空白ではなかったときに、
その値(値:A)を覚える。
2. 次にデータがある行まで進み、値(値:B)を覚える。
3. この両者(A、B)をつかって補完する。補完式の概略は、
(B - A) / (BのセルのRow - AのセルのRow) です。
この値を増加量として、A1が1、A5が5の場合に、A2が2、A3が3、、、という感じで、
埋めていくように考えています。
4. で、Aの値に代入しBの値を、再び、データがある行まで、進みあれば、2 に戻ります。
コードの目的を話します。
目的は、知り合いが、この補完をワークシート関数でやろうとしてて、
難しがっていたので、VBAで簡単に出来るのでは、と思い、試してみたところ、
私には、意外に難しかったので、もしかしたら、何かしらの、
わかりやすい方法があるのでは、と(どちらかといえば)興味本位で聞いた次第です。
特に、知り合いにプレゼントしようとは考えていません
(というか、してあげたいのですが、保守性が低くて、責任がとれないのでできません)。
長文になり、申し訳ありません。
よろしくお願い致します。
|
|