QUERY式の検索条件を可変にして利用者選択を可能にする

 概要:QUERY式のWHERE句を、利用者が選択できるようにする。
 
完成したQUERY式
=QUERY(qData!A10:AV8000,"SELECT A," & B37 & " WHERE 2=2 " & D3 & D4 & D5 & D6 & D7 & D8 & D9,1)
 
説明: WHERE 2=2  ⇒ダミーで記述。 選択する項目を AND  XX Like '%AAA%' とするため
 
利用者の選択

 ↑ 選択されなかった項目は、 AND,,,句が空白のため、 QUERY式では無視される。
 
AND句 数式
=if(B5<>"","AND AS Like '%" & B5 & "%'","")
単語の中間一致したいので、前後に'%'をつける
 
検索テク
セル内に改行が入っていると、 検索がセル内の1行目だけになってしまう。
それを回避するため、検索セルから CHAR(10) を削除した列を作る
=substitute(M11,CHAR(10),"")
 

QUERY式の表示列を可変にして利用者選択を可能にする

 趣旨:横に広い列を持つ表から、表示する列を選択できるようにする。ポイントは、SELECT句に B,C,F,... という列を、SpreadSheetの数式でつくることで実現する。
表示したい列を、プルダウンで選択する

 

選択列 は =CONCATENATE で連結

 

連結文字の最後のカンマをトル

 

列一覧を QUERY式から参照する
=QUERY(qData!A10:AR8000,"SELECT A," & B31 & "

※ QUERY式は、数式を使うセルの数が少ないので、
レスポンスが良いように思うのは、気のせい かも。

 

マクロを停止してブックを開く

起動したら自動で実行し、そのまま終了するExcelブックを
マクロを無効にして起動するプロシジャです。
=====================
Sub bkOpenNoMacro()
    Dim str As String
    Dim sWB As String
    ’ ブック名を指定する
sWB = "XXXXXV2_R6_Auto.xlsm"
  ' ブックのフルパスを作る
    str = ThisWorkbook.Path & "\" & sWB
 ’ マクロを無効にする
    Application.EnableEvents = False
 ' ブック
    Workbooks.Open str
  ’ マクロを有効に戻す
    Application.EnableEvents = True   
End Sub