• 締切済み

excel vba 検索の方法について

excel vba 検索の方法について sheet1とsheet2があり sheet1のA列に10列(全て8桁の数字)文字が並んでいます。 sheet2のA列には1000列(全て8桁の数字)文字が並んでいます。 sheet1のA列とsheet2のA列で同じ文字がある場合 sheet2のA列の同じ文字の隣のsheet2のB列に◎がつくような vbaが書きたいです。 A列の文字は消したり、文字を変えたりします。 コマンドボタンに書いて、ボタンを押せば B列に◎がつくようにしたいです。 ご教授お願いします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 因みに、VBAを使わなくても、Sheet2のB1セルに =IF(COUNTIF(Sheet1!A:A,"="&A1)>0,"◎","") という数式を入力してから、Sheet2のA列に数値を入力されるセルと同じ行の、B列のセルに貼り付けても、同様に表示させる事が出来ます。 (Sheet2の同じ行のA列のセルが空白の場合は、何も表示されませんから、数式の貼り付け先が1000行を超えても構いません)  貼り付け先の行数が多過ぎて作業が大変な場合は、数式を入力済みのセルの内、最も下にあるセルを選択してから、選択されたセルの右下の隅にある黒点にカーソルを重ねると、カーソルの形状が黒くて太い「+」に変わりますから、その状態のままでダブルクリックをして下さい。  すると、その列の左側にある列に、何らかのデーターが入力されているセルが存在している行の所まで、数式が自動的に貼り付けられます。

回答No.1

こんな感じですか? 1行目にタイトルがないものとします。 Sub test() Dim EndRow1 As Integer, EndRow2 As Integer Dim h As Integer, i As Integer Dim v1 As Variant, v2 As Variant With Worksheets(2) EndRow1 = Range("A1").End(xlDown).Row EndRow2 = .Range("A1").End(xlDown).Row v1 = Range("A1", Cells(EndRow1, 1)) v2 = .Range("A1", .Cells(EndRow2, 1)) For i = LBound(v1, 1) To UBound(v1, 1) For h = LBound(v2, 1) To UBound(v2, 1) If v1(i, 1) = v2(h, 1) Then .Cells(h, 2).Value = "◎" End If Next h Next i End With End Sub

関連するQ&A