外部データソースで対応するレコードを見つけることができるスプレッドシートを開発しようとしています。したがって、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 =?)を使用すると思いましたが、左のセルの値を使用するのではなく、パラメーター値を入力するように求められます。これを行う方法はありますか?
パラメーター化されたクエリ(IDVALUE =?)を使用しますが、パラメーター値の入力を求められます
あなたが言及したことから、私はあなたがMS Queryを使用していることを理解し、次の手順に従う必要があります
Excelでパラメータ化されたクエリを作成する手順は、パラメータとしてセル値を使用します
Use the query wizard to create or edit queries
のチェックを外してください。ほとんどの場合、あまり役に立ちません。view
メニューをクリックし、tables
のチェックを外します。これにより、クエリウィンドウのグラフィカルな表現が削除され、SQLクエリの変更が容易になります。SQL
メニューの下にあるformat
ボタンをクリックします。必要に応じてクエリを編集できるポップアップが表示されます。必要なパラメータに疑問符を追加してください。exit
メニューの下にあるview
ボタンをクリックします。その後、クエリウィンドウが閉じ、[データのインポート]ポップアップが表示され、Excelのどこに結果を表示するかを尋ねられます。適宜選択してくださいDefinition
タブをクリックします。 edit query
ボタンの隣のポップアップの下部にあるParameters
ボタンをクリックしますParameters
ポップアップには、クエリで使用されるパラメーターが表示されます。ここで、Get the value from following cell
ラジオボタンを選択して、クエリのパラメーターとしてセルの値を選択する必要があります。 [OK]をクリックすると完了です。
この方法は、VBAの経験がない人向けです。 VBAを知っている場合は、これを参照してください answer VBAを使用して同様のことを実現します。
そのためには、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