- ベストアンサー
エクセル(VBA)で名簿から該当する人を取り出す
- エクセル(VBA)を使用して、名簿から該当する人を取り出す方法について紹介します。
- 具体的な手順としては、以下のようなコードを作成します。まず、コース別VBAというシートを開きます。その後、クラス出席番号順シートを開き、指定した条件に該当するデータをコース別VBAに表示します。
- 取り出すデータは、番号・名前・住所などの情報です。上記の手順を実行することで、該当する人のデータを簡単に取得することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
エラー修正に関しては#1の方の通りです。 気になった点は、データ数が増減する可能性があるのであるのでしょうから、コース別VBAシートに抽出したデータを最初に削除する必要があります。又、抽出元データの増減にも対処が必要です。 両シートのデータがあるであろう列のデータが存在する最終行を取得し、データ削除又はforループの指定をする為に、変数「窓最大」「クラス最大」を追加したのが下記のマクロです。ご参考まで。 Sub コース別表示() Dim 窓, クラス As Worksheet Dim 引き取り As String Dim 縦, 行 As Integer Dim 窓最大, クラス最大 As Integer Set 窓 = Worksheets("コース別VBA") Set クラス = Worksheets("クラス出席番号順") 引き取り = 窓.Cells(3, 2).Value 'コース別VBAシート C列の最終行を取得し、最終行が5以上であれば、B6~G列最終行までの値を削除する 窓最大 = 窓.Range("B" & Rows.Count).End(xlUp).Row If 窓最大 > 5 Then 窓.Range("B6:G" & 窓最大).ClearContents 'クラス出席番号順シート C列の最終行を取得 クラス最大 = クラス.Range("C" & Rows.Count).End(xlUp).Row 縦 = 6 For 行 = 3 To クラス最大 If クラス.Cells(行, 9).Value = 引き取り Then 'クラス出席番号順シートのC列~H列の値をコース別VBAシートのB~G列に出力する 窓.Cells(縦, 2).Resize(, 6) = クラス.Cells(行, 3).Resize(, 6).Value 縦 = 縦 + 1 End If Next 窓.Activate End Sub
その他の回答 (1)
- mu2011
- ベストアンサー率38% (1910/4994)
(誤)窓.cell(縦, 2) (正)窓.cells(縦, 2) 因みに転記先が連続しているのでしたら、窓.cells(縦, 2).Resize(,6) = クラス.Cells(行, 3).Resize(,6).Valueでよろしいのではないでしょうか。
お礼
そうでした。。自分だと気づかないものです。ありがとうございます。 また、転記先が連続している書き方についてもありがとうございました。
お礼
すごいですね。データ数の増減などあります。全くその通りです。 いろいろと検索され抽出できるようになりました。 大変助かりました。ありがとうございます(^^)