• 締切済み

エクセルでVBAのマクロを組みたい

VBA初心者です。エクセルで大量の情報があるとき、A列の文字列が”****”であって、さらにB列の文字列が”++++”であるときの、C列の値を検索したい。それを1行目から最下行まで行いたい場合、どのようなプログラムになりますか、教えてください。よろしくお願いします。

みんなの回答

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

マクロでなくてもフィルタを使ったり関数を使えば比較的簡単にできますが、とりあえあずVBAで、ということなので作ってみました。 それで、 > A列の文字列が”****”であって、さらにB列の文字列が”++++”であるときの、C列の値を検索したい とありますが、検索した結果はどうすればいいのでしょうか。 一応、 ・Sheet1に元データが入っている ・Sheet2のA1にA列の検索条件(質問の例だと"***")を入力 ・Sheet2のB1にB列の検索条件(質問の例だと"+++")を入力 と仮定してマクロを実行すると、 ・「条件に合った行のC列の値を、Sheet2のC列に列挙する」ことにします。 標準モジュールに以下を記述し、実行してみてください。途中に出てくるシート名は実際のシートに即して書き換えてください。 Sub 条件抽出()  Dim i As Integer, j As Integer  Dim WS1 As Worksheet, WS2 As Worksheet  '以下の2行のシート名は実際の表にあわせて書き換えてください  Set WS1 = Worksheets("Sheet1") 'データが入っているシート名  Set WS2 = Worksheets("Sheet2") 'データを抽出するシート名    WS2.Columns(3).Clear  If WS2.Cells(1, 1) = "" Or WS2.Cells(1, 2) = "" Then   MsgBox ("検索条件をA1,B1に入力してください")   Exit Sub  End If    For i = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row   If WS1.Cells(i, 1).Value = WS2.Cells(1, 1).Value And _   WS1.Cells(i, 2).Value = WS2.Cells(1, 2).Value Then    j = j + 1    WS2.Cells(j, 3).Value = WS1.Cells(i, 3).Value   End If  Next End Sub

  • Kazamin
  • ベストアンサー率30% (17/56)
回答No.1

補足要求です。 検索した結果をどうしたいのですか? 別のシートに貼り付けるとか、何か演算を行って値を変更したいとか。 それがわからないと、回答のしようがないのですが・・・ 単にデータ抽出を行いたいだけであれば、マクロを組まなくとも オートフィルタ機能で抽出できるのではと思います。

関連するQ&A