• ベストアンサー

ExcelのMatch関数のようなものは、Accessにはないのですか?

 ExcelVBAは少しは理解しているつもりですが、AccessVBAはやりはじめたばかりです。  ところで、ExcelであるDBの要素より、そのデ-タが何行目にあるのか確認する時に、Match関数を使用します。   M = Application.Match(XX,YY,0)  のように.............   Accessでは、どうようにしてするのでしょうか?  いろいろ参考書をみても、発見できません。  よろしく、お願いいたします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>そのデ-タが何行目にあるのか確認する時にMatch関数を使用 AccessにはMatch関数はありません。 MatchはExcelのようなスプレットシート型の関数でAccessにはテーブルの何行目に データがあるのかという概念は無く確認はテーブルからの検索で行うと思いましたが・・。 DB自体の考え方は何行目にあるかではなくDBのテーブル内に存在するのかという事 であると思います。 例えば何万件のレコードの中で何万何千何百何十何行目に該当するデータがあるの かという事は重要ではなく何万件のレコードの中に該当するデータは存在するのか しないのかが重要。 そのためクエリやSQLがあり該当するデータがあるレコードをテーブル内から簡単に 抽出できる仕組みになっている。 このような事で参考書などには無いと思います。

その他の回答 (1)

  • nika
  • ベストアンサー率14% (66/470)
回答No.2

関数がない理由は、AccessつまりDBMS(データベースマネージメントシステム)そのものが、Match関数みたいなものだからです。 あるテーブルAともうひとつのテーブルBとの項目間でマッチした結果を得ようとすれば、クエリーでAとBの項目をリンクするだけで結果が得られます。 得られた結果は、別のテーブルCとして利用できるので、Match関数は必要ありません。

関連するQ&A

  • エクセル MATCH関数について

    エクセル2013の練習でMATCH関数とINDEX関数を利用した データを作っていました。 添付した画像のD79でMATCH関数を使って番号を表示しています。 D79に入力した式は=MATCH(C79,B73:B76)です。 指定の行はB73~B76までの4行で、春、夏、秋、冬の順番で並んでいますが C79に春と入力すると、順番としては1番目の春が何故か3と表示されます。 他の夏、秋、冬は順番通り2,3,4と結果が表示されます。 シートの設定を変にしてしまったのかもしれないと新規で開いて試しましたが結果は同じでした。 MATCH関数の検索を行ではなく列側に変えて試しもしましたが、結果は同じでした。 春以外の言葉や数字だとこのようなことは起こりません。 また、リストにしても直接打ち込みにしても同じ結果でした。 この現象を春を使用しない以外に回避する方法がありますでしょうか? 宜しくお願い致します。

  • マッチ関数をエクセルでするかアクセスでするか

    現在商品データーを入力しマッチ関数にてエクセルで出るようにしていますが、 データー量が多すぎてアクセスで処理をしたいと思ったのですがどうもうまく いきません。良いアドバイスをお願い致します 商品  分類    A    菓子 B    飲料 C    魚 別テーブルに日付一覧表があります (コレは分類毎に一覧が違います) (例)納品日   管理期限日   2003/01/01 2003/05/01    ・       ・    ・       ・    ・       ・ 現在は各商品のひとつのセルに対応する日付にマッチする 日付(管理期限日)をだしておりますが コレをアクセスで処理したいのですがクエリーで簡単にできるかと 思ったのですがうまくいきません良きアドバイスをお願い致します

  • Excelの関数(連立)はいくつまで可能?

    プロ野球の順位表をExcelで作っています。 まず成績表を作り、 そのあとIF関数をつかい自動的に順位がいれかわる方法をとっています。 リーグ毎(6チーム)はうまくなるのですが、 交流戦(12チーム)の順位表IF関数を=IF(xx,xx,IF(yy,yy,IF(zz,zz,… と11連立して作ることになりますが途中でエラーが出ます。 関数(連立)はいくつまで可能ですか?

  • ACCESS もしくはEXCEL条件によってコピー

    ACCESSもしくはEXCELで 口数の数量と同じようにそのデータ(行)をコピーしたいですが、お願い致します。 例: 住所   名前   口数 東京   XX XX  2 千葉   YY YY  1 神奈川  ZZ ZZ  3 を下の表ようにしたいです。 住所   名前   口数 東京   XX XX  1 東京   XX XX  1 千葉   YY YY  1 神奈川  ZZ ZZ  1 神奈川  ZZ ZZ  1 神奈川  ZZ ZZ  1 口数と同じようにその行を全部コピーしたですが、 宜しくお願い致します。

  • エクセルのMATCH関数について

    エクセルのMATCH関数を使って“E18:E23”の表から125以下の1番目の値相当する”“E11:E16”の値を取り出す計算式を作成しています。(“E18:E23”表のそれぞれの行の数値が“E11:E16”の表のそれぞれの行の数値のリンクしています。そのときの数式が“=INDEX(E11:E16,MATCH(125,E18:E23,1),1)”です。この場合は上手くいくのですが、条件を“125以上の1番目の値相当するを作成して、”=INDEX(E11:E16,MATCH(125,E18:E23,-1),1)“の様にMATCHの式の最後を-1にするんですが、”#N/A“のエラーメッセージが表示します。どうすればいいのでしょうか?(*なお表“E18:E23”は数値が小さい順ですが、表“E11:E16”そうとは限りません)  それと、125以上の1番目だけでなく、2番目、3番目を拾い出す計算式はないでしょうか? 宜しくお願いします。関数に関しては初心者でいろいろ検索しましたが、ぴったり来ません。

  • エクセルのINDEX(MATCH)関数

    エクセル2010で、INEX関数とMATCH関数を組み合わせて、表の交点のセルの値を求める式を作ったのですが、列方向に使用する器具をNo1、No2、・・・としたのですが、No9までは正しく検索できるのですが、No10以降になると、No1の値を参照してくることに気付きました。 ちなみにNo20、No21はNo2の行を、No30台はNo3の行を参照してくる事が分かりました。 そこでNoを取って単に数字だけにするとちゃんと11、22,、33に該当する行を正しく参照することも分かりました。 原因は何となく分かる(最初の3文字目までで検索する)のですが、対策はどうすれば良いのでしょう?

  • エクセル2007のMATCH関数の入力方法について。添付画像のような表

    エクセル2007のMATCH関数の入力方法について。添付画像のような表があるとします。 入力データとして、 要素1には 甲 または 乙 を入れます 要素2には(1)~(5)を入れます。 要素3には、1~300までを入れます。 画像の例では、要素が 甲・(3)・120なので 80 をE2に表示したいわけですが そのための関数式を教えて下さいませんでしょうか。 例の変形で、要素1を 乙にしたときには、E2セルに 85 を表示し、 要素を 甲・(4)・250とした場合には 140を、 要素を 乙・(1)・100とした場合は 15をE2に表示するというように、要素を任意に入れ替えて、表内で合致する値をE2に表示する関数の式が知りたいわけです。 たぶんMATCH関数を使うのだろうと思いますが、よくわからなくて・・・。 よろしくお願いします。

  • [VB2010]Excel関数のMatchの使用

    【環境】 ・Windows7 Pro 32bit ・VS.net2010(VB.NET) ・Excel2013 ・.net Framework 4.0 お世話になります。 VB.NETを使用して、あるCSVファイルを読み込み、 その読み込んだ内容を既存Excelファイルに対して書き込みを行うプログラムを書いております。 書き込む際、Excelシート内の特定の1つの列をキー項目としておりまして、 CSVから読み込んだ値とExcel側のキー値を比較して該当した行の特定のセルに 値をセットするような処理を行っています。 1回1回セルを参照して値を取得し、CSVの値と比較するようなことは避けようと思い、 初めはFind関数を使用していました。 しかし、Find関数は処理が遅いという記事をネットで見てから Match関数を使うと良いという内容でしたので、 早速Match関数を使用しようと思い以下の様なコードを書いてみたのですが エラーとなってしまいます。 ※Lookup系の関数も同じエラーになります。 -エラーメッセージ- COMExceptionはハンドルされませんでした。 WorksheetFunction クラスの Match メソッドが失敗しました。 エラーコード:-2146827284 Dim ret As Integer = 0 Dim xlApp As Excel.Application Dim xlSheet As Excel.Sheet Dim xlFunc As Excel.WorksheetFunction = xlApp.WorksheetFunction Dim rTemp As Excel.Range rTemp = xlSheet.Range("A1:A10") ret = xlFunc.Match("12345", rTemp , 0) '←ここでエラー ※上記コードは一部を抜粋してきたものです。 ただ、Count関数やMax関数、Min関数などは問題なく使用出来ましたので xlFuncが機能していない訳ではなさそうです。 Matchの書き方に問題があるのでしょうか。 また、そもそも使用出来ないものなのでしょうか。 何かお分かりになる方、もしいらっしゃいましたらご教示の程お願い致します。

  • エクセルのMATCH関数でセルの2行目の検索はどのように・・・。

    エクセルの初心者です。 MATCH関数について、 1つのセルの中に5行以上の文書が入っていて、その中の2行目の頭から5文字目までで検索をしたいのですが・・・。 左から5文字目までは”Left”を使えばいいと思うのですが、2行目の指定はどのように命令すればいいのでしょうか? 以上、よろしくお願いします。

  • エクセルのMATCH関数について

    エクセルのMATCH関数についての質問ですが、どうしてもエラーが表示され悩んでいます。どうか教えていただければと思います。 たとえば下記のような場合なぜかエラーが発生してしまいますがどうしてでしょうか?      A列   B列   C列   D列   E列   F列 1行              A     B    A+B  戻り値 2行    2.0        1.0    1.2   2.2   2 3行    2.2        0.9    1.1   2.0   1 4行    2.4        1.1    1.3   2.4   #N/A 5行    2.6        1.0    1.4   2.4   3 使用している関数は、 E列2行 =C2+D2  F列2行 =MATCH(E2,$A2:$A5,0) E列3行 =C3+D3  F列3行 =MATCH(E3,$A2:$A5,0) E列4行 =C4+D4  F列4行 =MATCH(E4,$A2:$A5,0) E列5行 =C5+D5  F列5行 =MATCH(E5,$A2:$A5,0) です。ここでどうしても、F列4行にエラー値(#N/A)が発生してしまいます。どうしてでしょうか? E列4行とE列5行は同じ値にもかかわらず戻り値が違うのはどうしてでしょうか? また、不思議なことにE列4行に手入力で2.4の値を入力した場合は戻り値は3となり、正しい値を表示します。どうしてでしょうか? 以上、よろしくお願いします。