Excel VBA 質問スレッド №179 (解決済)
あいまい検索の高速化
投稿者 : なみっぽ 投稿日時 : 2021/02/19(Fri) 22:25:13 OS : Windows 10 EXCEL : Excel 2016
Excelで40万件ほどのデータを扱うハメになりました。
Accessはありません。
変換表が以下の如くあります(実際は100行ほど)
りんご くだもの
みかん くだもの
ケーキ おかし
クッキー おかし
大量データのほうが
ひめりんご
うんしゅうみかん
ありたみかん
みかんジュース
あおりんご
りんごあめ
ショートケーキ
チョコレートケーキ
クッキー缶
バニラクッキー
…などとなっています。
これらを
変換表と付き合わせて
ひめりんご くだもの
うんしゅうみかん くだもの
ありたみかん くだもの
みかんジュース くだもの
あおりんご くだもの
りんごあめ くだもの
ショートケーキ おかし
チョコレートケーキ おかし
クッキー缶 おかし
バニラクッキー おかし
と出力したいのです。
変換表をdictionaryに入れて検索しようとしたのですが「key値を含むかどうかのあいまい検索」は出来ないのでしょうか。うまくいきませんでした。
現状forループ二つ回してますが処理がかなり遅く参っています。
SQLでいう
select 大量データ.商品名, 変換表.カテゴリ from 大量データ, 変換表 where 大量データ.商品名 like *| 変換表.キーワード |*
のようなことがしたいです。
お知恵をお貸しいただけますと幸いです。
よろしくお願いします。
Excelで40万件ほどのデータを扱うハメになりました。
Accessはありません。
変換表が以下の如くあります(実際は100行ほど)
りんご くだもの
みかん くだもの
ケーキ おかし
クッキー おかし
大量データのほうが
ひめりんご
うんしゅうみかん
ありたみかん
みかんジュース
あおりんご
りんごあめ
ショートケーキ
チョコレートケーキ
クッキー缶
バニラクッキー
…などとなっています。
これらを
変換表と付き合わせて
ひめりんご くだもの
うんしゅうみかん くだもの
ありたみかん くだもの
みかんジュース くだもの
あおりんご くだもの
りんごあめ くだもの
ショートケーキ おかし
チョコレートケーキ おかし
クッキー缶 おかし
バニラクッキー おかし
と出力したいのです。
変換表をdictionaryに入れて検索しようとしたのですが「key値を含むかどうかのあいまい検索」は出来ないのでしょうか。うまくいきませんでした。
現状forループ二つ回してますが処理がかなり遅く参っています。
SQLでいう
select 大量データ.商品名, 変換表.カテゴリ from 大量データ, 変換表 where 大量データ.商品名 like *| 変換表.キーワード |*
のようなことがしたいです。
お知恵をお貸しいただけますと幸いです。
よろしくお願いします。
スポンサーリンク
[返信 1] Re : あいまい検索の高速化
投稿者 : ヘンリー 投稿日時 : 2021/02/20(Sat) 09:25:41
質問を見たところAccessが使えてSQLが組めるように思えます。
であるならば、ExcelからAcceesに接続するのと同様に、
Excelに対してADOで接続して、SQLを使用すればよいと思います。
質問を見たところAccessが使えてSQLが組めるように思えます。
であるならば、ExcelからAcceesに接続するのと同様に、
Excelに対してADOで接続して、SQLを使用すればよいと思います。
[返信 2] Re : あいまい検索の高速化
投稿者 : なみっぽ 投稿日時 : 2021/02/22(Mon) 08:58:51
ご提案ありがとうございます。
試してみて速度を計測してみます。
(計測したらここの返信に書き込みます)
■[返信 1] ヘンリーさん(2021-02-20 09:25:41)の記事
> 質問を見たところAccessが使えてSQLが組めるように思えます。
>
> であるならば、ExcelからAcceesに接続するのと同様に、
> Excelに対してADOで接続して、SQLを使用すればよいと思います。
ご提案ありがとうございます。
試してみて速度を計測してみます。
(計測したらここの返信に書き込みます)
■[返信 1] ヘンリーさん(2021-02-20 09:25:41)の記事
> 質問を見たところAccessが使えてSQLが組めるように思えます。
>
> であるならば、ExcelからAcceesに接続するのと同様に、
> Excelに対してADOで接続して、SQLを使用すればよいと思います。
[返信 3] Re : あいまい検索の高速化
投稿者 : なみっぽ 投稿日時 : 2021/02/22(Mon) 15:06:08
実施してみました。
select 大量データ.商品名, 変換表.カテゴリ
from 大量データ LEFT JOIN 変換表
ON 大量データ.商品名 like '%' & 変換表.キーワード & '%'
SQLの記述について最初に投稿したSQLが大幅に間違っておりました、失礼いたしました。
また、ADOでのSQLは LIKE句で利用するワイルドカードは「*」ではだめで、「%」を使わなければならない事を知りませんでした。
勉強になりました。
25万行の処理に
Excelに保存された2つのテーブルを二次元配列に格納し、ループ2つまわす方法だと
35秒
別ファイル(TSV)にADOで接続して上記SQLを使用する方法ですと
85秒
でした。
高速化は実現しませんでしたが、ADOでCSVやTSVを直接読込めるという知識は貴重でした。
ありがとうございます。
実施してみました。
select 大量データ.商品名, 変換表.カテゴリ
from 大量データ LEFT JOIN 変換表
ON 大量データ.商品名 like '%' & 変換表.キーワード & '%'
SQLの記述について最初に投稿したSQLが大幅に間違っておりました、失礼いたしました。
また、ADOでのSQLは LIKE句で利用するワイルドカードは「*」ではだめで、「%」を使わなければならない事を知りませんでした。
勉強になりました。
25万行の処理に
Excelに保存された2つのテーブルを二次元配列に格納し、ループ2つまわす方法だと
35秒
別ファイル(TSV)にADOで接続して上記SQLを使用する方法ですと
85秒
でした。
高速化は実現しませんでしたが、ADOでCSVやTSVを直接読込めるという知識は貴重でした。
ありがとうございます。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-03 18:51:03 )