web-dev-qa-db-ja.com

列をパラメーターとして使用して、Excelでパラメーター化されたクエリを使用する方法

外部データソースで対応するレコードを見つけることができるスプレッドシートを開発しようとしています。したがって、ID値のリストを含む列Aがあるとします。列Bを開発します。列Bは、おそらくその値を持つテーブルの行数を表示します。何かのようなもの:

A              B
758348    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$1"
173483    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$2"

... 等々。そのため、パラメーター化されたクエリ(IDVALUE =?)を使用すると思いましたが、左のセルの値を使用するのではなく、パラメーター値を入力するように求められます。これを行う方法はありますか?

8
Jay Imerman

パラメーター化されたクエリ(IDVALUE =?)を使用しますが、パラメーター値の入力を求められます

あなたが言及したことから、私はあなたがMS Queryを使用していることを理解し、次の手順に従う必要があります

Excelでパラメータ化されたクエリを作成する手順は、パラメータとしてセル値を使用します

  1. 最初にExcelの[データ]タブに移動し、[外部データソース]で[MSクエリ]を選択します

MS Query

  1. データソースの選択を求めるポップアップが表示されます。データソースを選択するか、新しいデータソースを追加して選択します。 Use the query wizard to create or edit queriesのチェックを外してください。ほとんどの場合、あまり役に立ちません。

Data Source

  1. 次に、テーブルを追加するように求めるポップアップが表示されます。今はテーブルを選択してください。行の少ないテーブルを選択することをお勧めします。

add table

  1. 次に、選択したテーブルとそのデータを含むクエリウィンドウが表示されます

query window

  1. 次にviewメニューをクリックし、tablesのチェックを外します。これにより、クエリウィンドウのグラフィカルな表現が削除され、SQLクエリの変更が容易になります。

View menu

  1. クエリウィンドウのSQLメニューの下にあるformatボタンをクリックします。必要に応じてクエリを編集できるポップアップが表示されます。必要なパラメータに疑問符を追加してください。

edit query

  1. その後、ポップアップが表示され、パラメータ値を求めて、今のところ有効な値を入力してください

parameter

  1. 次に、クエリウィンドウに、入力したパラメータに基づいたクエリの結果が表示されます

result

  1. クエリウィンドウのexitメニューの下にあるviewボタンをクリックします。その後、クエリウィンドウが閉じ、[データのインポート]ポップアップが表示され、Excelのどこに結果を表示するかを尋ねられます。適宜選択してください

import

  1. [OK]をクリックする前に、左側の[プロパティ]ボタンをクリックします。デフォルトの使用法タブが選択された状態で、新しいポップアップが表示されます。

Properties

  1. このタブで必要な変更を行い、Definitionタブをクリックします。 edit queryボタンの隣のポップアップの下部にあるParametersボタンをクリックします

Definition

  1. Parametersポップアップには、クエリで使用されるパラメーターが表示されます。ここで、Get the value from following cellラジオボタンを選択して、クエリのパラメーターとしてセルの値を選択する必要があります。 [OK]をクリックすると完了です。

    parameter value


この方法は、VBAの経験がない人向けです。 VBAを知っている場合は、これを参照してください answer VBAを使用して同様のことを実現します。

18
Ram

そのためには、UDFを作成し、その関数のバックエンドがアクセスデータベースに接続するようにします。このようなもの:

Public Function countMyTable(IDValue As Double) As Long
'Requires:// Microsoft Access 16.0 Object Library
'Requires:// Microsoft Office 16.0 Access database engine Object Library
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = Access.DBEngine.Workspaces(0).OpenDatabase(DBFilePath, False, False)
Set rs = db.OpenRecordset("SELECT COUNT(1) FROM MyTable WHERE IDValue = " & IDValue, dbOpenSnapshot)
rs.MoveLast
countMyTable = rs(0)
db.close
End Function

これがお役に立てば幸いです、TheSilkCode

0
TheSilkCode