|
ありがとうございます。すごい!これが求めてたものです!
何度も申し訳ないですが、もう少し教えてください。
教えていただいたのを参考に、応用して下記コードを書いてみようと思ったのですがうまく動きません。
Sheet1に下記のような元のデータがあるとして(A~C列やE~G列、I列は見たいデータではないので省略)
D列 H列 J列
品名 属性 値
リンゴ 赤a 111
リンゴ 赤b 222
みかん 橙c 333
リンゴ 赤d 444
バナナ 黄e 555
みかん 橙f 666
リンゴ 赤g 777
Sheet2のA1に”品名”、A2セルに入力規則を設定し選択するセルにする。
G5セルに”属性”、H5セルに”値”
G6:H6以下に取り出したデータ
が出るようにしようと思い下記のように書いてみました。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
If Target.Address(0, 0) <> ws2.Range("A2") Then Exit Sub
Application.EnableEvents = False
ws1.Range("H2:J2").Copy ws2.Range("G5") ‘もう面倒なのでH2~J2列までまとめてコピーして貼り付けてしまいました。
ws1.Range("D2").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=ws2.Range("A1:A2"), _ ‘クライテリアはSheet2のA1:A2です。
CopyToRange:=ws2.Range("G5:I5") ‘G5:I5以下にSheet1のH2:J2列以下のフィルタかけた値を書き出す。
Application.EnableEvents = True
End Sub
これだと、Sheet2のA2セルを変更してもまったく何も起こりません。
どうしてでしょうか?
お手数ですが教えてください。
|
|