Excelワークシートに大きなテーブルがあります。
Column_1 | Column_2 | Column_3
ValueA ValueB ValueC
....
私が必要とするのは、入力として範囲とSQLのようなクエリ文字列を取り、クエリに一致する行の範囲を返す関数です:
=SQL_SELECT(A1:C1000, "SELECT * WHERE Column_1 = ValueH AND Column_3 = blah")
このようなものはありますか?それとも、自分を実装する最良の方法は何でしょうか?
ありがとう
Excel 2010の[データ]タブにあるGet External Data
(名前を表示)を使用して、ブック内でconnection
を設定し、それ自体からデータをクエリできます。 From Other Sources
From Microsoft Query
を使用してExcelに接続します
セットアップしたら、VBA
を使用してconnection
を操作し、とりわけ、クエリを駆動するSQLコマンドを表示および変更できます。このクエリdoesはメモリ内のブックを参照するため、最新のデータを更新するために保存する必要はありません。
接続オブジェクトへのアクセスを示すクイックSub
を次に示します
Sub DemoConnection()
Dim c As Connections
Dim wb As Workbook
Dim i As Long
Dim strSQL As String
Set wb = ActiveWorkbook
Set c = wb.Connections
For i = 1 To c.Count
' Reresh the data
c(i).Refresh
' view the SQL query
strSQL = c(i).ODBCConnection.CommandText
MsgBox strSQL
Next
End Sub
ブックを保存できる場合は、ADOおよびJet/ACEを使用して、ブックをデータベースとして扱い、シートに対してSQLを実行するオプションがあります。
ADOを使用してExcelにアクセスする方法に関するMSDNの情報は、 here にあります。
SUM_IFでジョブを完了できる場合があります。
列Aに一意のproductID
、列Pに単価を含む製品情報のシートがあり、列Aに製品IDを持つ発注書のシートがあり、列Tに単価を計算するとします。エントリー用。
次の数式は、セルEntries!T2でトリックを行い、同じ列の他のセルにコピーできます。
=SUMIF(Products!$A$2:$A$9999,Entries!$A2, Products!$P$2:$9999)
次に、エントリごとのアイテム数を含む別の列を作成し、それに単価を掛けてエントリの総コストを取得します。
これを行う簡単な方法の1つは、関心のある行に対してtrueと評価される数式を含む列を作成し、その列で値TRUEをフィルター処理することです。