| すぐマク YNxv9869 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
| キーが一致するデータを抽出して別のシートに作成するには? |
|
|
|||
|
いいですよ、孫たちへのクリスマスプレゼントは早めに済ませておきましたから。 ご質問の表は、データが列(右)方向に並んでいる珍しいレイアウトですね。 データが行(下)方向に並んでいれば色々な方法がありますが、ご自分でどこまで考えられたのかが不明ですし、比較的わかりやすい For...Next文で繰り返し処理する方法で回答します。 下記にマクロと処理の流れをお示ししますから、対比しながら根気よく理解してください。 なお、マクロをステップ実行するか、64行目のあたりにブレークポイントを設けて実行してみて理解する方法が、手っ取り早いかも知れません。
Sub キーが一致するデータを抽出して別のシートに作成する()
10 番号右端 = Worksheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Column
20 表右端 = Worksheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
30 答列 = 1
40 For 番号列 = 1 To 番号右端
41 番号 = Worksheets("Sheet2").Cells(1, 番号列).Value
50 For 表列 = 1 To 表右端
51 表の値 = Worksheets("Sheet1").Cells(1, 表列).Value
60 If 番号 = 表の値 Then
61 名前 = Worksheets("Sheet1").Cells(2, 表列).Value
62 Worksheets("Sheet3").Cells(1, 答列).Value = 名前
63 答列 = 答列 + 1
64 End If
70 Next
80 Next
End Sub
処理の流れ10. Sheet2に入っているデータの右端の列番号を取得して変数「番号右端」に代入する 20. Sheet1 〃 〃 「表右端」 〃 30. 答をセットするための列番号の初期値として、変数「答列」に 1 を代入する 40. 指定した回数だけ以下の一連のステートメント(注1)を繰り返し実行する (注1)80行目のNextステートメントまで ・カウンタとして変数「番号列」を使い、 ・その初期値は 1、 ・(1回繰り返すごとにカウンタの値に 1加えて )、 ・カウンタの値が変数「番号右端」の値になるまで 41. Sheet2のセル (1行目の変数「番号列」の値の列) の値を変数「番号」に代入する 50. 指定した回数だけ以下の一連のステートメント(注2)を繰り返し実行する (注2)70行目のNextステートメントまで ・カウンタとして変数「表列」を使い、 ・その初期値は 1、 ・(1回繰り返すごとにカウンタの値に 1加えて )、 ・カウンタの値が変数「表右端」の値になるまで 51. Sheet1のセル (1行目の変数「表列」の値の列) の値を変数「表の値」に代入する 60. もし変数「番号」の値と、変数「表列」の値が等しい場合は、以下の一連のステートメント(注3)を実行する (注3)64行目の End Ifステートメントまで 61. Sheet1のセル (2行目の変数「表列」の値の列) の値を変数「名前」に代入する 62. 変数「名前」の値をSheet3のセル (1行目の変数「答列」の値の列)に代入する 63. 変数「答列」の値に 1 加える |
| http://www.happy500z.com/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |