つきましては例題を作りましたので、①マクロの記述・作成方法と動かし方、②関数を使った場合の計算式の書き方の2通りについて教えてください。
例題
A1セルには、A7、A8,A9....のデーターをそれぞれ入れたい。
B1セルには、B7,B8,B9.....のようにA列の行と同じ行のB列の数値を入れたい。
A7,A8,A9...また、B7.B8,B9...のデーターをA1,B1セルに入れたときにC1の計算結果をC7,C8,C9....に入れたい
同様にD7,D8,D9....にはD1の計算結果を入れたい。
ちなみにC1=A1+B1,D1=B1-A1となっています。
当方はエクセル初心者につきまして、上記の方法を具体的に教えてください。
よろしくお願いします。
A1 を手入力すると、B1, C1, D1, C7~, D7~ の数値が変わる、ってことで良いんですよね。
=VLOOKUP(A1,A7:B20,2)
二番目の引数は、検索対象範囲で、B20 の 20 は、好きなだけ下に延ばしてください。
C7 が C$1 になってるのは、式のコピペが楽だからです。
こういう感じで操作します。
リストボックスを選び終わると、ウィンドウの中には、こんなのが表示されています。
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
そこに、以下のようなコードを入力します。
Private Sub Worksheet_Change(ByVal Target As Range) ' ★ここから Const r_start = 7 Const r_end = 20 Application.EnableEvents = False a1 = Range("a1").Value For i = r_start To r_end If (a1 = Cells(i, 1).Value) Then Range("b1").Value = Cells(i, 2).Value Range("c1").Value = a1 + Range("b1").Value Range("d1").Value = Range("b1").Value - a1 Exit For End If Next For i = r_start To r_end Cells(i, 3).Value = Range("c1").Value Cells(i, 4).Value = Range("d1").Value Next Application.EnableEvents = True ' ★ここまで End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Const r_start = 7 Const r_end = 20 Application.EnableEvents = False For i = r_start To r_end Cells(i, 3).Formula = Replace(Range("c1").Formula, "1", CStr(i)) Cells(i, 4).Formula = Replace(Range("d1").Formula, "1", CStr(i)) Next Application.EnableEvents = True End Sub
C1、D1 が数式だったら、C1~D1 をコピー、C7~C20 へ貼り付け、ということで実現できそうな気もしますけど。
行数が多くて、貼りつけ範囲を指定するのが面倒なのだ、ということであれば、
という感じで操作できます。
2014/08/03 11:02:56C7~ が空の状態になっているのが前提の操作ですが、値が埋まってても、似たような操作で範囲を選択できます。
一応、C1、D1 の数式を、C7~、D7~ へコピーするマクロを、回答に追記しました。
わかりづらい質問にお答え頂きましてありがとうございました。
2014/08/03 12:49:43関数は別として、マクロは下記のように修正しましたら希望の動作となりましたの報告させて頂きます。
Private Sub Worksheet_Change(ByVal Target As Range)
Const r_start = 7
Const r_end = 20
Application.EnableEvents = False
a1 = Range("a1").Value
For i = r_start To r_end
' If (a1 = Cells(i, 1).Value) Then
Range("a1").Value = Cells(i, 1).Value
Range("b1").Value = Cells(i, 2).Value
Cells(i, 3).Value = Range("c1").Value
Cells(i, 4).Value = Range("d1").Value
' Range("c1").Value = a1 + Range("b1").Value
' Range("d1").Value = Range("b1").Value - a1
' Exit For
' End If
Next
'For i = r_start To r_end
' Cells(i, 3).Value = Range("c1").Value
' Cells(i, 4).Value = Range("d1").Value
'Next
Application.EnableEvents = True
End Sub