| 
    
     |  | ▼YN61 さん今晩は。kobasanです。 
 わたしは、VBA についてまだまだ勉強中です。
 YN61 さんのコードは分かりやすく、自分の勉強の材料になると思って、今回作ってみただけです。むしろ、YN61 さんのコードから色々なことを勉強させてもらいました。
 
 >肝心の部分だけでもコメントいただければありがたいのですが…
 
 VBE のヘルプで ReDim を検索してみてください。
 ReDim Preserve について次のような説明があります。
 
 ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
 
 ReDim ステートメントの構文は、次の指定項目から構成されます。
 
 指定項目 内容
 Preserve 省略可能です。既存の配列に格納されている値を失うことなく、
 配列の最後の次元の要素数を変更する場合に使用する、キーワードです。
 
 >
 >>  '-----品名の無重複データ作成
 >>  With Sheets(1)
 >>    n = 0
 >>    For Each c In Range("B2", Sheets(1).Cells(65535, 2).End(xlUp))
 >>      If Application.CountIf(.Range("B2", c), c.Value) = 1 Then
 >>        n = n + 1
 >>        ReDim Preserve X(1 To n)  >>ここが特に理解できません。
 '↑
 '配列の要素数を自由にに設定するためのものです
 '配列に格納されている値を失うことなく、
 '配列の最後に要素を追加します
 >>        X(n) = c.Value    >>ここが特に理解できません
 '↑
 'CountIf が1なら品目がダブっていないので、
 '抽出のキーワードとして配列に格納します。
 '
 >>      End If
 >>    Next
 >>  End With
 >>
 
 Find や like を使った検索にこだわることなく、
 要は検索したいキーワードを最初に全て調べて配列Xに格納し、
 そのキーワードについて抽出を繰り返せばよいと考えただけです。
 
 そのために、「品名の無重複データ作成」のブロックを作っただけです。
 
 こんな説明で分かってもらえますでしょうか。
 
 |  |