Excel VBA 質問スレッド №1555 (解決済)

テーブルから条件を指定して検索

投稿者 : season     投稿日時 : 2023/09/05(Tue) 12:02:03     OS : Windows 10     EXCEL : Excel 2013
初めまして、掲題質問させていただきます。

Excel上でテーブルを配置しており、そこから例えば「日付列の値が9/1~9/30までのデータ」という条件で検索したり
その検索結果を変数に格納するということをVBAにて行いたいです。

SQLのSELECT文、WHERE文のようなイメージです。

色々調べたところそういったことが書かれているサイトがなく
実装できるかもわからない状態です。


もともとSQLSERVERからとってきたものをExcelテーブルに表示しているので
SQLSERVERからまた取ってくることはできるのですが、せっかくテーブルとして表示していますので
そちらを活用したいと考えました。

よろしくお願いいたします。

スポンサーリンク
[返信 1] Re : テーブルから条件を指定して検索
投稿者 : higeru     投稿日時 : 2023/09/05(Tue) 13:16:58
 Select は SQL とはまったく違うメソッドですし、Where 句もありませんが、まずはオートフィルタをかけましょう。

[返信 2] Re : テーブルから条件を指定して検索
投稿者 : season     投稿日時 : 2023/09/05(Tue) 13:25:21
■[返信 1] higeruさん(2023-09-05 13:16:58)の記事
>  Select は SQL とはまったく違うメソッドですし、Where 句もありませんが、まずはオートフィルタをかけましょう。
前提が少なくすみません。表を触らず検索結果を別のシートに文字列として表示させたいです。
こういったものは実装不可能でしたでしょうか。

[返信 3] Re : テーブルから条件を指定して検索
投稿者 : higeru     投稿日時 : 2023/09/05(Tue) 13:40:53
 実装不可能などということはありませんが、であれば日付列の値をひとつずつチェックするしかないでしょう(具体的なコードを示すには開示されている情報が少なすぎます)。
 ただオートフィルタといっても絞り込みで一時的に見た目が変わるだけであって、データが変わる訳でもないし、最後に絞り込みを解除すればよいだけの話だと思いますが。
 そもそも「テーブル」であればデフォルトでオートフィルタ設定されてますよね。

[返信 4] Re : テーブルから条件を指定して検索
投稿者 : season     投稿日時 : 2023/09/05(Tue) 15:45:52
ありがとうございました。
こちらの理想としていた動きはできないだろうということがわかりました。

[返信 5] Re : テーブルから条件を指定して検索
投稿者 : tek     投稿日時 : 2023/09/06(Wed) 06:41:00
seasonさんの理想と同じかは解りませんが、たぶんマッチするのではと思うものが、
私の知る限り2種類有ります。

1つ目は
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.advancedfilter
単一テーブルにしか対応できませんが、
Action:=xlFilterCopyとし、
CopyToRange:= がSELECT
CriteriaRange:= WHERE
に対応します。
但し、テーブルのフィルターは解除されます

2つ目は
https://learn.microsoft.com/ja-jp/office/vba/api/excel.queries.add
複数のテーブルを操作できます
M言語で書きます
https://learn.microsoft.com/ja-jp/office/vba/api/excel.querytable.commandtext
SQL文で書きます

他には、ちょっと要件に一致するかは解りませんが、
https://learn.microsoft.com/ja-jp/office/vba/api/excel.pivottable
必要項目のみを表形式で表示させ、日付をタイムラインで絞り込むことも可能です。

それぞれ出力されたテーブルや表を一括で変数に取り込むことが可能です。

[返信 6] Re : テーブルから条件を指定して検索
投稿者 : higeru     投稿日時 : 2023/09/06(Wed) 10:01:42
■[返信 5] tekさん(2023-09-06 06:41:00)の記事
> seasonさんの理想と同じかは解りませんが、たぶんマッチするのではと思うものが、
> 私の知る限り2種類有ります。

> 1つ目は
> https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.advancedfilter

 なるほど、名が体を表していない「詳細設定」ですね。シート編集では割と使いますが、VBA ではほとんど使わないので思い至らなかったです。
 もうひとつの方はまったく知りませんが、season さんには悪いことをしてしまったかも。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2023-10-02 00:51:44 )
タイトルとURLをコピーしました