プロが教えるわが家の防犯対策術!

Excelマクロがよく分からので教えてく下さい。


Excelで次のように表を作成します(添付画像参照)。

・A列・・・連番
・B列、C列、D列・・・それぞれに任意の値
・E列・・・G列の関数で得た値をE列に返す。
・G列に関数(=B2&C2&D2)

G2で得た値を、E2に返す方法として
以下のマクロで出来ることが調べて分かりました。

Sub 取得()
Dim namae As String
namae = Range("G2").Value
Range("E2").Value = namae
End Sub

ですが、G列の値全てをE列全てに返す場合のマクロの作成方法がわかりません。
どなたか詳しい方がいましたら、ご教示願います。

「Excelマクロでセルの値を他のセルに表」の質問画像

A 回答 (1件)

はて? 「実際には」何をしたいのでしょうか。




方法1:ご質問の直接の回答
sub macro1()
range("E2:E6").value = range("G2:G6").value
end sub


方法2:
E2に
=IF(COUNTA(B2:D3)=3,B2&C2&D2,"")
と記入し、下向けにつるつるっとコピーして埋めておく


方法3:
E2に
=B2&C2&D2
と記入しておき、E6までコピー貼り付けておく

B2:D6までデータを埋めておく
エクセルの標準の設定では、B7、C7、D7以下にデータを記入すると、自動でE7以下に数式が記入される


方法4:
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub Worksheet_Change(byval Target as excel.range)
 dim h as range
 on error resume next
 for each h in application.intersect(target, range("B:D"))
 if application.counta(cells(h.row, "B").resize(1, 3)) = 3 then
 with cells(h.row, "E")
  .formular1c1 = "=CONCATENATE(RC[-3],RC[-2],RC[-1])"
  .value = .value
 end with
 end if
 next
end sub

B,C,D列にデータを記入する。
    • good
    • 1
この回答へのお礼

説明不足ですみません。
自分が求めていたのは方法1です。

今回セルをクリックして、セル内の値をコピーしたいのが目的でした。
関数が含まれたセルは、クリックした時に関数式に戻ってしまうので
マクロを使って別のセルに値のみを表記する方法を探していました。

大変助かりました。
ありがとうございました。

お礼日時:2012/07/09 21:13

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

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


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