Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3829 / 76735 ←次へ | 前へ→

【78535】AutoFilterによる 配列を使ったあいまい抽出
質問  めがめが  - 16/11/1(火) 18:03 -

引用なし
パスワード
   はじめまして。めがめがといいます。
よろしくお願いします。

漫画シートと抽出シートがあり、
抽出シート
    E列    F列    J1=3  
1行目 タイトル タイトル
2行目 *あ*    あ
3行目 *い*    い
4行目 *う*    う
J1は、抽出シートに直接関数を入れて、タイトルを除くタイトルの個数を
CONTA関数で取得し表示しています。
F列にタイトルの一部を入力し、VBAで、抽出する際に、
E列に*を前後につけた物を転機し、それらを配列に格納し、
その配列を使用して、
漫画シートを、あいまい検索をかけています。
配列を使用しているのは、この検索をした後にまた別のマクロを
実行する場合があり、Criteria1をどうしても使用したいからです。
CriteriaRangeで、E列の抽出タイトルの部分を選択して、抽出すると、
オートフィルターの矢印がつかないので、
その後、さらに、他のマクロで、再度別条件で絞り込んいく事ができません。
その為、Criteria1の方を使用しています。ただ、この配列による抽出は、
完全一致などだとうまくいくんですが、
上記のような、あいまい検索の場合、2件までしか正常に作動しません。
*あ*
*い*
まででしたら、それらを配列に格納して、抽出できますが、
*あ*
*い*
*う*
になると、結果は0件で、漫画シートには何も表示されません。
どうしたら、Criteria1の配列を使用した検索で、3件以上のあいまい検索ができますか?または、CriteriaRangeを使用して絞り込んだデータを一旦、目視して、必要な時、別のマクロで別条件でさらに絞り込む事は可能ですか?可能でしたら、
わざわざ、Criteria1の配列による検索などしないのですが。
コードはこういうのを書いています。

Sub 漫画タイトル抽出2()

'一旦 フィルター解除
  If Worksheets("漫画").FilterMode = True Then
   Worksheets("漫画").ShowAllData
  End If
  
 Sheets("抽出").Select
 
'抽出シート 以前のタイトル 事前に一旦クリア

 With Cells(50000, 5)
  '最終行の1つ下の行を取得。これを、最終行のみ取得すると、タイトル列に何も入力されてない場合に、見出しのE1まで消えてしまう。その為.Offset(1,0)が必要
  Worksheets("抽出").Range("E2:E" & .Cells(.Cells.Rows.Count, 1).End(xlUp).Row).Offset(1, 0).ClearContents 'ClearContents 値のみクリア

 End With
'あいまい検索の為に、作業列に*つけてタイトル結合
  Dim endRow_F As Long

endRow_F = Cells(Rows.Count, "F").End(xlUp).Row

For i = 2 To endRow_F
 
    Cells(i, "E").Value = "*" + Cells(i, "F").Value + "*"
Next i

'検索 抽出

Dim cnt_code As Integer
  
Sheets("抽出").Select
'エクセルのJ1に設定してあるコードのカウント数を取得
   cnt_code = Range("J1").Value - 1
  
     Dim code() As String
     Dim fRng As Range
'動的配列の個数をここで設定
 
  If cnt_code >= 0 Then
   ReDim code(cnt_code)
   End If
  
   
   For i = 0 To cnt_code '抽出isbn
         code(i) = Range("E2").Offset(i, 0).Value '*タイトル 配列に格納
   MsgBox "code" & i & "=" & code(i)
   Next i
 
Sheets("漫画").Select
 
If cnt_code >= 0 Then
  Range("A1:L1").AutoFilter field:=12, Criteria1:=code, Operator:=xlFilterValues
End If
End Sub

4 hits

【78535】AutoFilterによる 配列を使ったあいまい抽出 めがめが 16/11/1(火) 18:03 質問[未読]
【78536】Re:AutoFilterによる 配列を使ったあいま... マナ 16/11/1(火) 20:37 発言[未読]
【78541】Re:AutoFilterによる 配列を使ったあいま... めがめが 16/11/2(水) 16:53 質問[未読]
【78542】Re:AutoFilterによる 配列を使ったあいま... β 16/11/2(水) 17:05 発言[未読]
【78543】Re:AutoFilterによる 配列を使ったあいま... β 16/11/2(水) 17:08 発言[未読]
【78544】Re:AutoFilterによる 配列を使ったあいま... めがめが 16/11/2(水) 17:29 発言[未読]

3829 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free