11.[2弾-136]A列とB列を比較して抽出する
[2002/01/29 U.Kさんからの質問]
私は金融の仕事でエクセルVBAを使用しておりますが是非ステートメントを記述できるようになり
仕事で活用したいと日々練習しております。
さてExcel500連発第二弾の136で記述なさったデータ抽出のステートメントに
関し教えていただきたくメール致しました。
質問-------
A列とB列を比較してあるものをD列にないものをF列に抽出していますが
次のステートメントについて教えてください。
c 1 =1 : c2 = 1
For i = 1 To endr1
keym = Cells(i , 1)
Set actv =Range(Cells(1,1),Cells(endr2,1))
.find(keym,,,xlwhole,xlByColumns,xlNext,False)
D列とF列を表示しているc1、c2の意味、表示形式を教えてください
i = 1 の1がどこのセル内容を意味しているのか教えてください。
Rangeをオブジェクトfindをメソッドで使っていますが、find()の()
には何を記述するのかfindの使い方を教えてください。( keym,,,)の,,,カンマが
何を意味し省略しているのか教えてください。
Columnが列というのは知っているのですがxlByColumnとの違い、
xlwhole,xlByColumns,xlNext,Falseの意味を教えてください。
宜しくお願いします。
c1 = 1: c2 = 1 'c1はD列行カウント、c2はF列行カウント、データ形式は数字
For i = 1 To endr1 'iの1は1行目
keym = Cells(i, 1) 'この1はA列、したがって(2,1)ならA2セル
Set actv = Range(Cells(1, 1), Cells(endr2, 1)) _
.find(keym, , , xlWhole, xlByColumns, xlNext, False)
find()の()内の意味は下記。(特に指定しない場合はカンマのみ)
find([1],[2],[3],[4],[5],[6],[7],[8])
[1] What → 検索内容 (上記の場合は変数keymが検索するデータ)
[2] After → 検索開始セル (上記は省略で、セル範囲の左上隅)
[3] LookIn → xlFormulas:書式、xlValues:数値軸、xlNotes:メモ(上記は省略)
[4] LookAt → xlWhole:全体、xlPart:検索文字列を含むセルを対象
[5] SearchOrder → xlByColumns:列単位で検索、xlByRows:行単位で検索
[6] SearchDirection → xlNext:後方に検索、xlPrevious:前方に検索
[7] MatchCase → True:大文字と小文字を区別する、False:区別しない
[8] MatchByte → True:半角と全角を区別する、False:区別しない
カンマの意味 → 何番目の引数か識別する為に省略の場合もカンマが必要
省略してfind(keym, MatchCase:=False)のように記述する方法もある
なお、掲載のサンプルマクロが間違っています。申し訳ありません。
B列のデータを検索するのであり、
誤:Set actv = Range ( Cells( 1 , 1) , Cells( endr2, 1)).find
正:Set actv = Range ( Cells( 1 , 2) , Cells( endr2, 2)).find
今後も宜しくお願いします。
【戻る】