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)"
Discussion
New Comments
No comments yet. Be the first one!