Excel VBA質問箱 IV

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

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


5305 / 13644 ツリー ←次へ | 前へ→

【51568】抽出データを完全一致させたい やまだ 07/9/25(火) 20:16 質問[未読]
【51573】Re:抽出データを完全一致させたい じゅんじゅん 07/9/25(火) 21:42 発言[未読]
【51575】Re:抽出データを完全一致させたい やまだ 07/9/25(火) 22:32 発言[未読]
【51577】Re:抽出データを完全一致させたい じゅんじゅん 07/9/25(火) 23:47 発言[未読]
【51587】Re:抽出データを完全一致させたい やまだ 07/9/26(水) 13:17 発言[未読]
【51588】Re:抽出データを完全一致させたい じゅんじゅん 07/9/26(水) 13:58 発言[未読]
【51595】Re:抽出データを完全一致させたい やまだ 07/9/26(水) 18:49 お礼[未読]
【51596】Re:抽出データを完全一致させたい n 07/9/26(水) 21:11 発言[未読]
【51597】Re:抽出データを完全一致させたい やまだ 07/9/26(水) 21:16 お礼[未読]
【51591】Re:抽出データを完全一致させたい ハチ 07/9/26(水) 16:14 発言[未読]
【51592】Re:抽出データを完全一致させたい ハチ 07/9/26(水) 16:30 発言[未読]
【51594】Re:抽出データを完全一致させたい やまだ 07/9/26(水) 18:45 お礼[未読]

【51568】抽出データを完全一致させたい
質問  やまだ  - 07/9/25(火) 20:16 -

引用なし
パスワード
   VBA歴1ヶ月半、2回目の質問投稿です。

約3900あるデータと300程の抽出データをすり合わせ、
一致するものだけを表示させるというプログラムを参考書をお手本にして作成しました。
具体的にはSheet1に元データ、Sheet2に抽出条件となるデータ、抽出されたデータをSheet3に表示させています。
しかし、完全に一致しないデータまで抽出されてしまい困っています。
■例
抽出条件となるデータ:ABC-0012
抽出されてしまう完全一致しないデータ:ABC-00123
抽出されてしまう完全一致しないデータ:ABC-0012(A) 等

どうすれば完全一致するものだけを抽出出来るか、お教え願いたいと思います。
宜しく御願いします。

下記が私が作ったVBAです。

Sub 検査対象絞込み()

Sheets(Sheet1).Range("A1:X3960").AdvancedFilter xlFilterCopy _
   Sheets(Sheet2). _
   Range("A1, Sheets(Sheet2).Cells.SpecialCells(xlCellTypeLastCell).Address), _
   Sheets(Sheet3).Range("A1:X3960")

End Sub

【51573】Re:抽出データを完全一致させたい
発言  じゅんじゅん  - 07/9/25(火) 21:42 -

引用なし
パスワード
   シートレイアウトが不明なので憶測ですが。

抽出データ側に項目行はありますか?

元データの項目名と抽出するデータの項目名が同じであれば、
出来るかと思います。

ちなみに、A列〜X列が完全一致した行が抽出対象ですか?

【51575】Re:抽出データを完全一致させたい
発言  やまだ  - 07/9/25(火) 22:32 -

引用なし
パスワード
   >じゅんじゅんさん

説明不足ですみません。

シートレイアウトは
Sheet1〜Sheet3まで同じです。
A列からX列まで項目があり、
B列のみを検索対象としています。
B列のみ完全一致で抽出出来れば、
他の列の項目は同じでも異なっていてもかまいません。


>シートレイアウトが不明なので憶測ですが。
>
>抽出データ側に項目行はありますか?
>
>元データの項目名と抽出するデータの項目名が同じであれば、
>出来るかと思います。
>
>ちなみに、A列〜X列が完全一致した行が抽出対象ですか?

【51577】Re:抽出データを完全一致させたい
発言  じゅんじゅん  - 07/9/25(火) 23:47 -

引用なし
パスワード
   >Sub 検査対象絞込み()
>
>Sheets(Sheet1).Range("A1:X3960").AdvancedFilter xlFilterCopy _
>   Sheets(Sheet2). _
>   Range("A1, Sheets(Sheet2).Cells.SpecialCells(xlCellTypeLastCell).Address), _
>   Sheets(Sheet3).Range("A1:X3960")
>
>End Sub

Worksheets("Sheet1").Range("A1:X3960").AdvancedFilter xlFilterCopy, _
Worksheets("Sheet2").Range("B1", Worksheets("Sheet2").Range("B" & Rows.Count).End(xlUp)), _
Worksheets("Sheet3").Range("A1")

ではどうでしょうか?(未検証ですけど)

【51587】Re:抽出データを完全一致させたい
発言  やまだ  - 07/9/26(水) 13:17 -

引用なし
パスワード
   ▼じゅんじゅん さん:

やってみたのですが、抽出結果は今までのプログラムと変わりませんでした。
スミマセンです。
何がイケナイのでしょうね。


>Worksheets("Sheet1").Range("A1:X3960").AdvancedFilter xlFilterCopy, _
>Worksheets("Sheet2").Range("B1", Worksheets("Sheet2").Range("B" & Rows.Count).End(xlUp)), _
>Worksheets("Sheet3").Range("A1")
>
>ではどうでしょうか?(未検証ですけど)

【51588】Re:抽出データを完全一致させたい
発言  じゅんじゅん  - 07/9/26(水) 13:58 -

引用なし
パスワード
   ▼やまだ さん:
>▼じゅんじゅん さん:
>
>やってみたのですが、抽出結果は今までのプログラムと変わりませんでした。
>スミマセンです。
>何がイケナイのでしょうね。
>

抽出条件が多いのでしょうかね?(300という経験がないもので)

あとはシート2のB列をDictionaryオブジェクトに放り込んで、
シート1の順にB列の値をDictionary内にあるかチェックし、あったらその行を
シート3に貼り付ける。
なんてのもありかな?

【51591】Re:抽出データを完全一致させたい
発言  ハチ  - 07/9/26(水) 16:14 -

引用なし
パスワード
   ▼やまだ さん:
>▼じゅんじゅん さん:
>
>やってみたのですが、抽出結果は今までのプログラムと変わりませんでした。
>スミマセンです。
>何がイケナイのでしょうね。
>
>
>>Worksheets("Sheet1").Range("A1:X3960").AdvancedFilter xlFilterCopy, _
>>Worksheets("Sheet2").Range("B1", Worksheets("Sheet2").Range("B" & Rows.Count).End(xlUp)), _
>>Worksheets("Sheet3").Range("A1")
>>
>>ではどうでしょうか?(未検証ですけど)

横から失礼します。

ちなみにExcelのバージョンはいくつでしょう?
記憶で書きますが、
フィルタオプションの文字列だけの場合の条件は

2000=部分一致
2002=完全一致
2003=前方一致

だったような気がします。

間違ってたらスイマセン・・・

【51592】Re:抽出データを完全一致させたい
発言  ハチ  - 07/9/26(水) 16:30 -

引用なし
パスワード
   >ちなみにExcelのバージョンはいくつでしょう?
>記憶で書きますが、
>フィルタオプションの文字列だけの場合の条件は
>
>2000=部分一致
>2002=完全一致
>2003=前方一致
>
>だったような気がします。
>
>間違ってたらスイマセン・・・

スイマセン間違ってました。
当方、Excel2000ですが、

前方一致 ですね。

【51594】Re:抽出データを完全一致させたい
お礼  やまだ  - 07/9/26(水) 18:45 -

引用なし
パスワード
   ▼ハチ さん:

会社のPCで行っているのですが、
バージョンは2000でした。
たしかにこれだと前方一致という事で合致しますね。
納得しました。

2000で完全一致させるには
オートフィルタを利用する方法とかあるでしょうか?


>スイマセン間違ってました。
>当方、Excel2000ですが、
>
>前方一致 ですね。

【51595】Re:抽出データを完全一致させたい
お礼  やまだ  - 07/9/26(水) 18:49 -

引用なし
パスワード
   ▼じゅんじゅん さん:

ハチさんからの情報で、Excel2000でこのVBAでは
完全一致は出来ない様でした。

VBA歴が浅いので、まだDictionaryオブジェクトの内容・使い方が分かりません。
これから勉強してみます。


>抽出条件が多いのでしょうかね?(300という経験がないもので)
>
>あとはシート2のB列をDictionaryオブジェクトに放り込んで、
>シート1の順にB列の値をDictionary内にあるかチェックし、あったらその行を
>シート3に貼り付ける。
>なんてのもありかな?

【51596】Re:抽出データを完全一致させたい
発言  n  - 07/9/26(水) 21:11 -

引用なし
パスワード
   こんにちは。
>Excel2000でこのVBAでは完全一致は出来ない様でした。
『抽出条件となるデータ』のつくり方次第かもしれませんね。

[XL] データベースから完全に一致する文字列を抽出する方法
tp://support.microsoft.com/kb/214100/ja

【51597】Re:抽出データを完全一致させたい
お礼  やまだ  - 07/9/26(水) 21:16 -

引用なし
パスワード
   ▼n さん:

アドバイスありがとうございます。
参考にさせていただきます。

>[XL] データベースから完全に一致する文字列を抽出する方法
>tp://support.microsoft.com/kb/214100/ja

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