• ベストアンサー

エクセルVBA:データベースの連続検索について

失礼します。 あるデータベースの検索条件が文字列のA、B、C、D、E、があるとして、 ABCDEを引数にして、Aの次はB、その次はCというように順番通りに連続して検索し値を取得したい。 引数以外の検索プログラムは一度書きでループ処理し、 ABCDEと連続してデータベースより検索し値を取得しEで終了する方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

データベースはADOでアクセスするということでよろしいのでしょうか。 接続が確立していてその名称が”DB接続”だとすると 以下のようなコードになります。 Sub dbdbdb() Dim LastLine As Long Dim ss As Variant Dim SQLstr As String Dim RS As Recordset Set RS = New ADODB.Recordset ss = Split("A,B,C,D,E", ",") For i = 0 To UBound(s)   SQLstr = "Select * from testtbl where ID='" & ss(i) & "';"   RS.Open DBsqlstr, DB接続, , adLockOptimistic   LastLine = cells(Rows.Count, 1).End(xlUp).Row + 1   If RS.EOF=False Then       RS.CopyFromRecordset cells(LastLine, 1)   End If   Close RS Next Set RS = Nothing End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 検索VBAを教えてください。

    VBAの勉強中です。 超初心者です。 シート1のB3に入力した値を、シート2のデータベースのC列から検索して、その検索した値と同じ行のD列・E列・F列の値を、シート1のB4・ B5・B6に表示したいと思います。 <シート1>    A     B     C     D 1 2     3       あああ ←ここを入力すると 4       aaa   ←表示したい! 5       bbb   ←表示したい! 6       ccc   ←表示したい! <シート2>    A    B    C      D     E     F 1           あああ    aaa     bbb     ccc 2           いいい      eee     fff      ggg 3           ううう      hhh      iii       jjj 4           えええ     kkk      mmm     nnn 5             おおお     ooo     ppp     qqq findを使えばいいと聞きましたが、使い方がよくわかりません。 例を読みましたが、どう自分に生かせばいいのかわかりませんでした。 どなたか未熟な私に教えていただけませんか? どうぞよろしくお願いいたします。

  • Excel VBAによる検索処理?

    Excelで以下の例のように、A列・B列に入力されているとします。A列を検索して、C列にB列の値を返す式を考えてますが、さっぱりわかりません。VBAとかも正直素人ですが、サンプルもしくは考え方を教えていただければと思います。以下の処理内容です。 ・AXセルが「B」であった場合、次のセル(A(X+1))を検索し、次が空白になるまで検索し、空白になる前の最後の行のB列の値をCXセルに返す。該当しない場合は空白のまま 下記の例ですと3行目、8行目のB列の値を2・3、6-8行目のC列のセルに返すことになります。よろしくお願いいたします。 (処理前) ___A__B__C ------------- 1 2__B__2 3__B__3 4______4 5______5 6__B__6 7__B__7 8__B__8 9______9 (処理後) ___A__B__C ------------- 1 2__B__2__3 3__B__3__3 4______4 5______5 6__B__6__8 7__B__7__8 8__B__8__8 9______9

  • エクセルVBAで質問です

    下のような表を作っています。 A列に日付がある限り、B、C、D、E列それぞれの列に対して、 3行目以降のデータが検索値と同じであれば、そのひとつ上の行の 値をG、H、I、J列にそれぞれ上から順に入れていきたいのですが、 どのようになるでしょうか。 A1 月日 B1 検索値1・・・B3以降データ C1 検索値2・・・C3以降データ D1 検索値3・・・D3以降データ E1 検索値4・・・E3以降データ G2以降に検索値1で調べた値 H2以降に検索値2で調べた値 I2以降に検索値3で調べた値 J2以降に検索値4で調べた値 例えば、B1の検索値が1であり、B10に1があったとします。 この場合、ひとつ上のB9の値をG2に来るようにしたいのです。 説明下手ですが教えていただけないでしょうか。

  • Excel マクロでの検索

    大量のデータ(約40000件)をDB(約3000件)から検索し該当する値を返す作業をしています。 マクロを今日初めて組んだのですが、うまく行きません。 だれか教えてください。 例:※同Sheet内での作業です。 DB(列1・2)     データ(列3・4)※ランダムに並んでます。   1  2      3     4 1 a  A      c   Cを返したい(cを1列より検索し2列の値を返す) 2 b  B      e   Eを返したい(eを1列より検索し2列の値を返す) 3 c  C      d   Dを返したい(dを1列より検索し2列の値を返す) 4 d  D      d   Dを返したい(dを1列より検索し2列の値を返す) 5 e  E      h   Hを返したい(hを1列より検索し2列の値を返す) 6 f  F      @   @が1列に無い場合は空欄でよい ・  ・ ・      ・     ・ ・  ・ ・      ・     ・ 今日、私は4列のワードを変数とし、1列より検索する方法をとりました。(Loopで組みました) Find.で組むと、不要なワードまで検索してしまう状況です。 例:aaaaで検索→aaaaaaがhitしてしまう。 同一ワードで検索する方法も試したのですが、エラーが出てしまいます。 自分なりにFindNextなども試してみましたが、無限Loopになってしまいます。 Loopを使わなくてもいいので、方法を教えてください。 本来自力で調べるべきですが、急ぎの仕事な為、ご協力ねがいます。

  • どの関数が良いのか教えてください

    VLOOKUPまたはDGETで試してみましたが、 うまくいきません。 よろしくお願いいたします。 あ  ABCDE  C あ  ABCDE  C ・    ・    ・ ・    ・    ・ ま  EFGHI  R ま  EFGHI  R ・    ・    ・ ・    ・    ・ A、B、Cそれぞれの列には全く同じ値の行が複数ずつあります。 A、B、Cの値の組み合わせは全て同じです。 このデータベースからB列の「ABCDE」ならばC列の「C」を拾って 来たいのですが、うまくいかないのは同じ値の行が複数あるから なのでしょうか。 よろしくお願いいたします。

  • エクセルVBAについて

    以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例):  A B C D E F G 1 1 2  3  4 5  6  7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」  これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。   要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。

  • Excelの関数について教えてください。

    前にも同じような質問をしたのですが、よく理解できなかったので、もう一度質問させていただきます。 まず、A列に1~10まで入力します。次にB列に11~20まで入力します。同様にC列に21~30まで入力します。そして、セルE3に2、セルE5に12に入力します。 それから、セルE3の値をA列から検索し、セルE5の値をB列から検索し、その重なったB行のC列の値を求めたいのです。ここでは22になります。 自分なりに考えてみましたが、 =IF(MATCH(F3,A:A)=MATCH(F5,B:B),INDEX(A2:C10,MATCH(F3,A:A)=MATCH(F5,B:B),C:C,"")) ではエラーがでてしまいます。 いくら考えてもわかりません。 どなたか教えてください。よろしくお願いします。

  • エクセルのVBAでソートをしたい

    エクセルの A列に1,1,3,2,4・・・・・というデータがあって、 B列にB,A,C,D,E・・・・・というデータがった場合、 上から順番に1A,1B,2D,3C,4Eという順番に並べ替えしたいです。 エクセル単独でやる場合は、データの並べ替えでA列を第一優先、B列を第二優先で並べ替えをすればよいのですが、 VBAに埋め込んで、ボタンを押せば並べ替えできるようにできますでしょうか?

  • Excel VBAでデータを並び替えたい

    D~M列に値が10個入っています。 D1,E1の値を取り出して、A1,B1セルに移動させ、 次はF1,G1の値をA2,B2に移動させ、それをL1,M1をA5,B5に移動するまで繰り返し、 次はD2,E2の値をA6,B6へ移動させ、L2、M2まで繰り返します。 横に10個の数値が入っているものから、2つずつ取り出して 2列縦に値を並べたいのです。 元の値が並んでいるところ(D~M列)は、ところどころ値が10ではなく、4だったり、6だったりしますが、 5つ目と6つ目以降、あるいは7つ目と8つ目以降の値も空白としてA,B列に移動させたいです。 ご教示くださいますよう、お願いします。

  • エクセルの関数で顧客管理データーベース

    エクセルの関数で顧客管理データーベース (画像添付あります) 顧客管理で、関数を使いたいのですが、 一時保管の A3と、B3は常に、違う値が入ります。 そこで、それを、データーベース化したいのですが、 例えば、 A3、B3の値を、E3、F3に移して、 また、A3,B3を消去し、新しい値を入力し、それを次に、E4、F4に移したいのですが、 どうしたらよいでしょうか。

専門家に質問してみよう