EXCEL超初心者マクロ(7)- 検索(FIND)-
EXCEL超初心者マクロと言いつつ、自分の思いつきでUPしてるような気がしてますが、そこは置いといて…
今回は、検索をご紹介します。
Findを使うのですが
例は、【球団名】が入っているシートから、【選手名と球団名】が入っているシートを検索して、その【球団名】とマッチした数をカウントします。
ついでに、1回でも検索されたら○マークを【選手名と球団名】に入れます。
完全一致ではなく、部分一致を使います。
※マスタ検索などは、【選手名と球団名】から【球団名】を完全一致で検索してデータを抽出するのが一般的です。
サンプルです。
Sample_7V1.xlsm
MSG_FLG = MsgBox(" ◆ CHECK 開始致します クリアOK?◆", vbYesNo)
If MSG_FLG = vbNo Then
Exit Sub
End If
mySheetName001 = "球団"
mySheetName002 = "選手"
' Application.ScreenUpdating = False '### 高速化on
TSTART = Timer
' ***クリア処理***
'### シートフィルタ解除サブプロシジー ###
sheet_clear
Sheets(mySheetName002).Select
Cells.Interior.ColorIndex = xlNone
Sheets(mySheetName001).Select
'######## 球団クリア #########
Sheets(mySheetName002).Select
Columns("C:C").Select
Selection.ClearContents
Range("A1").Select
'######## COUNTクリア #########
Sheets(mySheetName001).Select
Columns("C:C").Select
Selection.ClearContents
Range("A1").Select
CNT01 = 1
CNT02 = 0
CNT03 = 0
Application.StatusBar = "処理件数 >" & CNT03 & " 件"
Set set_data01 = Worksheets(mySheetName001).Range("A2")
set_data01.Offset(-1, 2).Value = "件数"
Do Until set_data01.Offset(0, 0).Value = ""
CNT02 = 0
'########## データ 検索 #############
kensaku1 = set_data01.Offset(0, 1).Value
Set MyRange1 = Worksheets(mySheetName002).Columns(2).Find(kensaku1, lookat:=xlPart, MatchByte:=False) '部分一致
If Not MyRange1 Is Nothing Then
firstAddress = MyRange1.Address
Do
CNT02 = CNT02 + 1
MyRange1.Offset(0, 2).Value = "○"
Set MyRange1 = Worksheets(mySheetName002).Columns(2).FindNext(MyRange1)
Loop While Not MyRange1 Is Nothing And MyRange1.Address <> firstAddress
set_data01.Offset(0, 2).Value = CNT02
End If
'########## 次行 #############
Set set_data01 = set_data01.Offset(1, 0)
CNT03 = CNT03 + 1
Application.StatusBar = "NGWORD / 処理件数 >" & CNT03 & " 件"
Loop
' Application.ScreenUpdating = True '### 高速化off
TEND = Timer
MsgBox ("かかった時間は" & TEND - TSTART & "秒です")
Worksheets("START").Range("H4").Value = TEND - TSTART
Application.StatusBar = "処理件数 >" & CNT03 & " 件(END)"
ディスカッション
コメント一覧
まだ、コメントがありません