2012-01-06 10 views
51

私はExcelワークシートで大きめのテーブルを持っている:私は必要なものワークシートデータに対してSQLのようなクエリを作成するExcel関数?

Column_1 | Column_2 | Column_3 

ValueA  ValueB  ValueC 
.... 

は入力としてレンジとSQLのようなクエリ文字列を取得し、クエリに一致する行の範囲を返す関数です、例:

=SQL_SELECT(A1:C1000, "SELECT * WHERE Column_1 = ValueH AND Column_3 = blah") 

このようなことはありますか?あるいは自分自身を実装する最良の方法は何ですか?

おかげ

+0

ADOとJet/ACEを使用してワークブックをデータベースとして扱い、シートに対してSQLを実行するオプション。 –

+0

[ピボットテーブル](http://stackoverflow.com/search?q= [エクセル] +ピボット+テーブル&サブミット=検索)? – SeanC

+0

最近の「遅い回答」のためにこれを見つけました。驚いたことに、Excelの「高度なフィルタ」機能は、少なくともここの右のボールパークにあると言われているようです。 –

答えて

46

Excel 2010の[データ]タブにあるGet External Data(名前を照会)を使用して、ブック内のconnectionを設定して、データ自体からデータを照会することができます。エクセル

一度あなたが他の事、ビューの中で、へconnectionを操作して、クエリを駆動するSQLコマンドを変更するためにVBAを使用することができますセットアップに接続するためにFrom Other SourcesFrom Microsoft Queryを使用してください。このクエリでメモリ内のブックを参照するため、最新のデータを最新表示するために保存する必要はありません。ここで

は、接続へのアクセスを証明するために迅速な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 
+0

これはありがとう、ちょうど私が探しているものに見える –

+3

あなたはこれがあなたの質問に答えたことを確認できますか? –

+1

strSQL = c(i).odbcconnection.commandtext行 – zoonosis

5

ブックを保存することができますならば、あなたがデータベースとしてワークブックを扱い、シートに対してSQLを実行するためにADOとジェット/ ACEを使用するオプションを持っています。

ADOを使用してExcelをヒットする方法に関するMSDN情報はhereです。

+0

うん、それは確かに可能性があります、提案のおかげさまで、私が本質的にここでやっているように「外部的に」参照する必要はありません。 –

+0

「外部的に」とはどういう意味ですか? –

+1

よくADO/Jetは、メモリ内の範囲ではなく、ファイルシステム上のシュレッドシート(​​シートの保存が必要であることを意味します)を参照します。 –

1

は時々SUM_IFが仕事を得ることができますオブジェクト。列Aに一意のproductID、列Pに単価を含む製品情報のシートがあるとします。列Aに製品IDを持つ発注書の1つのシートがあり、列Tにその単価を計算させたいとします。

次の数式は、セルのエントリ[T2]でトリックを行い、同じ列の他のセルにコピーできます。

= SUMIF(製品$ A $ 2:!$ A $ 9999エントリー$ A2、製品$ P $ 2:!!$ 9999)

次に、あなたは、エントリごとの項目数を持つ別の列を持っているし、それを掛けることができエントリの総コストを取得する単価。

0

これを行う簡単な方法の1つは、気にする行について真と評価し、その列の値TRUEをフィルタリングする数式を持つ列を作成することです。その後、SQLステートメントを実行しますが、機能して、ワークシートに数式を実行したい場合は

1

は、アドイン・ツール

例、function BS_SQL("SELECT ...")使用:あなたは、あなたが持っているワークシートを保存することができた場合は

enter image description here

関連する問題