人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelのセルにSQL文を書いて結果を得る方法ってありますか?たとえば「SELECT ITEM FROM TABLE WHERE KEY=A1」(ここでA1はセルの中身)のようなことをしたいです。有料のアドインを使ってもよいです。

●質問者: simplestyle
●カテゴリ:コンピュータ
✍キーワード:A1 Excel Key SELECT SQL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● llusall
●9ポイント

こちらが参考になると思います。

エクセルからエクセルをデータベースとして使う方法です。

アクセスのクエリ感覚でデータを操作できるようですし、SQLも直接いぢれそうです。

■エクセルでデータデータベース

http://www.geocities.jp/tomtomf/

エクセルでデータベースpart1ODBCの設定

エクセルでデータベースpart2SQLによる参照1

エクセルでデータベースpart3SQLによる参照2




それとも、ワークシート関数の事を言っておられるのでしょうか?

だとしたら、ありません。

替わりとして、「データベース関数」や「検索関数」があります。

データベース/リスト管理関数(一部抜粋)

DAVERAGE リストまたはデータベースの指定された列を検索し、条件を満たすレコードの平均値を返します。

DCOUNT リストまたはデータベースの指定された列を検索し、条件を満たすレコードの中で数値が入力されているセルの個数を返します。

DCOUNTA リストまたはデータベースの指定された列を検索し、条件を満たすレコードの中の空白でないセルの個数を返します。

DGET リストまたはデータベースの列から、指定された条件を満たす 1 つの値を抽出します。

DMAX リストまたはデータベースの指定された列を検索し、条件を満たすレコードの最大値を返します。

DMIN リストまたはデータベースの指定された列を検索し、条件を満たすレコードの最小値を返します。

DSUM リストまたはデータベースの指定された列を検索し、条件を満たすレコードの合計を返します。

など


検索/行列関数(一部抜粋)

VLOOKUP 配列の左端列で特定の値を検索し、対応するセルの値を返します。

HLOOKUP 配列の上端行で特定の値を検索し、対応するセルの値を返します。

など

中でも、DGET関数VLOOKUPがSELECT文に近い働きをすると思います。



または、マクロ(VBA)の事を言っておられるのでしたら、DAOADOでAccessや、その他のDBに接続してSQL文でデータを取得できます。

DAOはこちらの「DAOの使用方法」が参考になると思います。

http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db/db.html


ADOはこちら

http://www.geocities.jp/shotanajp/VB/DBLink.html


2 ● llusall
●66ポイント ベストアンサー

再回答ですみません。

ユーザ定義関数+ADO+ExcelODBCドライバ で実現できます。


=ExecSQL(SQL文)

という関数を作ってみます。

以下、サンプルです。


1.ユーザ定義関数の作成

    VBAのエディタを起動し、標準モジュールを追加。

    以下のコードを記述してください。

    Public Function ExecSQL(ByVal sql As String) As String

        Dim cn As ADODB.Connection

        Dim rs As ADODB.Recordset

        Dim xl_file As String

        

        xl_file = ThisWorkbook.FullName '他のブックを指定しても良し

        

        Set cn = New ADODB.Connection

        cn.Provider = "MSDASQL"

        cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _

          "DBQ=" & xl_file & "; ReadOnly=False;"

        cn.Open

        Set rs = New ADODB.Recordset

        rs.Open sql, cn, adOpenStatic

        

        ExecSQL = rs("NAME").Value

        

        rs.Close

        cn.Close

    End Function


2.Sheet2 にデータベースを作成

       |   A  |   B   

    -----------------------------

    1  |  ID  | NAME

    2  |   1  | あああ

    3  |   2  | いいい

    4  |   3  | ううう


3.Sheet1 にユーザ定義関数を記述

    A1セルに、「2」を入力

    A2セルに、「=execsql("Select NAME from [Sheet2$] Where ID = " & A1)」を入力

4.A2セルには、「いいい」が表示されます。



参考

[HOWTO] Visual Basic または VBA から ADO を Excel データで使用する

ADO を使用して Excel ブックのデータの読み取りおよび書き込みを行う方法 (ExcelADO)

◎質問者からの返答

これで大丈夫です!


3 ● ardarim
●5ポイント

このアドオンソフトでできそうですが、どうでしょうか?

SQL*XL

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ