• 締切済み

エクセル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関数を使うのだろうと思いますが、よくわからなくて・・・。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

#6です。私の回答では数値区分の値を1つの数にする例ですが、判りにくければ 数値区分のせるで、例えば100のセルの書式をユーザー定義で、###"から200"と設定して、「100から200」のような見た目にすることが出来ルことを申し添えます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

式が複雑になる最大の要素は、文字列の1~100などの見出しにあると思う。人間には見やすいが、関数の処理には面倒。 私は勝手ながら下記のように変更させてもらった例を説明する。 ーー (大方針) 表の索引は、行、列が決ればその交差点のセルの値の数を取ってくれば良い。 ーー 例 データ 甲、乙、丙の3種の例。私のやり方では増えても式が変わるだけ。 B2:D2,E2:G2,H2:J2はそれぞれセル結合してあるものとする。3列にしているが 4列などが混じった場合は私のやり方では対応できず、修正が必要。 A1:J8 -は実際は空白列。左詰め防止用。 - - - 検索表 - 甲 乙 丙 - 0 100 200 0 100 200 (1) (2) (3) a - - x y z (4) (5) ーーー (行の決定) 行であるが、条件2の(1)から(5)は、条件(1)の値には関係なく場所か固定で、(3)などを探せば良いから簡単。 (注)INDEXやMATCHの探すセル範囲(第1、第2引数)はA1を起点にしたほうがわかりやすいのでそうする。もうひとつの方法は表の実質データの左上隅セルにする方法である。 =MATCH("(3)",$A$1:$A$8,0)のような式で捉えられる ーーー (列の決定) 列であるが、甲乙・・と値が関係して決る。 大枠の甲乙丙のスタート列は =MATCH("乙",A2:J2,0)で決る。甲は2、乙は5である。 ーーー 最終的な見るべき列は、条件3の値も関係して決る。 それぞれのスタート列から3列について、MATCH関数の第3引数1を使って、範囲検索的なことをやる。 =MATCH(115,OFFSET($A$1,2,MATCH("乙",$A$2:$J$2,0)-1,1,3),1)+MATCH("乙",$A$2:$J$2,0)-1) 乙の115の場合の、見るべき列です。この場合は7(G列)です。 組み合わせて =INDEX($A$1:$J$8,MATCH("(3)",$A$1:$A$8,0),MATCH(115,OFFSET($A$1,2,MATCH("乙",$A$2:$J$2,0)-1,1,3),1)+MATCH("乙",$A$2:$J$2,0)) 私の例ではZを返します。 ・ OFFSET($A$1,2,MATCHの2は条件3の数量区分けが第3行目(A1から隔たりは2行)だから。 ・ +MATCH("乙",$A$2:$J$2,0))は乙などのスタート列からの隔たり列数なので、A1起点に換算するため+MATCH("乙",$A$2:$J$2,0)) している。 ーー 以上は、(3)や乙や115などの1例の値でやっているが、条件の入っているセル番地に置き換えた式を作って入れてください。 ーー 甲、乙、丙の条件3の区分だが、MATCH関数の第3引数の1の場合を考えて、1程度注意が必要なので、 以上、未満の問題も含めて、その付近の数で、表と条件3を変化させて見て、チェックしてください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

C8セルから右に「~」の数字が入力されている現在のレイアウトそのままを利用するなら以下のような複雑な数式を使用する必要があります。 =IF(COUNTA(C2:C4)<3,"",INDEX(C9:H13,MATCH(C3,B9:B13,0),MATCH(C4,INDEX(LEFT(C8:E8,(FIND("~",C8:E8)-1)*1)*1,))+(C2="乙")*3)) C8セルに「1」D8セルに「101」のように開始の数字だけが記載されているなら以下の式で計算できます(必ずC2セルは甲か乙のみ入力される場合) =IF(COUNTA(C2:C4)<3,"",INDEX(C9:H13,MATCH(C3,B9:B13,0),MATCH(C4,C8:E8)+(C2="乙")*3))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 一例です。 ↓の画像で説明させていただきます。 要素3の行の数値を画像の黄色部分のように変更してみてください。 要素1に関しては「甲」か「乙」しか入らない前提です。 E2セルに =IF(COUNTBLANK(C2:C4),"",IF(C2="甲",INDEX(C9:E13,C3,MATCH(C4,C8:E8,1)),INDEX(F9:H13,C3,MATCH(C4,F8:H8,1)))) という数式を入れています。 余計なお世話かも知れませんが、画像の4・5行目(薄い緑色の部分)でその範囲を説明しています。 結局201以上の場合は全て同じ結果が返ります。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.3

こんな数式でどうでしょう。 =VLOOKUP(C3,B9:H13,INT((C4-1)/100)+IF(C2="甲",2,5))

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

方法は色々ありますが一例として =INDEX(INDIRECT(C2),MATCH(C3,B9:B13),ROUNDUP(C4/100,0)) ※範囲C9:E13に甲、範囲F9:H13に乙と名前付けする INDIRECT関数を使いINDEXの範囲を指定 MATCH関数で範囲の何行目かを指定 列指定は今回100単位での増加なので100で割った数値をROUNDUPで繰り上げて列数を求めています。

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.1

以下のような式でどうでしょうか。 =IF(C2="甲",INDIRECT(IF(C4<101,"B",IF(C4<201,"D","E"))&MATCH(C3,B9:B13)+8),INDIRECT(IF(C4<101,"F",IF(C4<201,"G","H"))&MATCH(C3,B9:B13)+8))

yamata2525
質問者

お礼

ありがとうございました。ばっちりできました。 他の方からもいろいろいただいています。後で試してみます。

関連するQ&A

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

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

  • エクセルの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番目を拾い出す計算式はないでしょうか? 宜しくお願いします。関数に関しては初心者でいろいろ検索しましたが、ぴったり来ません。

  • 2段階リストをOFFSET、MATCH関数で作る

    2段階リストを、「名前の定義」つまり「INDIRECT関数」を使わず、OFFSET関数とMATCH関数で作るのが目的ですが、成功しません。 添付した画像の「A列目」に1段目リストを、「B列目」に2段目リストを作ります。 E列からH列は元データです。 たとえば「リスト」表示にせず、単に「りんご」をB2に表示させたい場合は =OFFSET(D1,1,1,2,) こうなるわけです。 なので「行数」はこれであっています。 問題の「列数」がMATCH関数になるのでわかりずらいです。 また、もうひとつの条件ですが、リストに空欄を作らない、 大項目、小項目共に()などの記号が入っても、表示させることができればと思います(INDIRECT関数ではこれができません)。 ミスっている原因と正しい式をわかりやすく教えてください。

  • エクセルでMATCH関数結果をアドレスに使いたい

    エクセルでMATCH関数で得た返り値をセルのアドレスに使いたいのです。 具体的には、AF列の6行目から下に向かってランダムに2015/7/25,2015/7/23,2015/7/15.....の ように日付が並んでいます。G6には任意の数値(整数)が入力されてます。E6に任意の日付が入力されております。このとき、E6に入力された任意の日付に対しAF列に入力されているランダムな日付と一致するセルを検索し、そのセルのG6に入力されている数値分下のセルの日付値をF6セルに返すよう、F6セルに計算式を入れたいのです。F6セルには 「=AF(MATCH(E6,AF6:AF2473,0)+5+G6)」のように数式を入力してみたのですが、うまくいかないのです。MATCH関数で得た数値をセルアドレスの数値に使おうとして入れた式なのですが、「#NAME?」と出てしまってうまくいかないのです。すみませんが、ご存じの方いましたらご教示お願いできないでしょうか。よろしくお願い致します。

  • エクセル 関数

    下記「甲」の表があったとします。 番号/商品/単価(円)/個数/売上(円) 1/リンゴ/50/3/150 2/みかん/10/10/100 3/もも/100/2/200 4/なし/60/1/60 5/ぶどう/80/4/320 さらに、下記「乙」の表があったとします。 番号/売上(円) 1/150 3/200 5/320 「乙」の表を作成するのに、売上額をいちいち「甲」の表を参考に手入力するのは面倒なので、「番号」欄に「1」と入力したら「売上」欄には自動的に「150」が表示されるようにしたいのです。 どのような関数を使えば良いか教えてください。 宜しくお願い致します。

  • エクセル 関数

    下記の「甲」の表があったとします。       単価(円) 個数 売上(円) 1 リンゴ 50   5   250 2 みかん 10   10   100 3 もも  100   2   200 4 なし  60   3   180 5 ぶどう 80   2   160 そこで更に下記「乙」の表があったとします。 対象番号 売上  1   250  3   200  5   160 「乙」の表を作成するのに、売上を「甲」の表を参考に手入力するのでは面倒なので、例えば「対象番号」欄に「1」と入れたら「売上」欄には自動で「250」と表示されるようにしたいのです。 どのような関数を使えば良いか教えて下さい。 よろしくお願いします。

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

    エクセルの関数について 入金管理表(例1)を作成し、顧客を入力すると、別に作成してあるリスト(例2)を見て同じ顧客名の支払い日を入金管理表のE列に表示させたいのですが、どんな関数式を用いれば可能でしょうか? どなたか教えてください。よろしくお願いいたします。

  • Accessでのデータ検索(表示)について

    Access初心者です。 Accessでのデータ検索(表示)について質問します。 例えば、フィールド列がAからEまであり、A列には1から20までの数字がはいっており、BからE列には金額が入ったテーブルがあるとします。 そして、フォーム上に「甲」「乙」と言う名前のテキストボックスが2つあり「甲」のテキストボックスにB10と入力すると「乙」にテーブルのA列の10とB列で交わる金額が表示され、C20と「甲」に入力するとA列20とC列で交わる金額が表示されると言った具合に「甲」の値が変わるつど「乙」も変わるようにするには、どうすればよいでしょうか?少し分かりにくい質問ですみません。 エクセルだとMATCH関数やINDEX関数等を組み合わせることで可能かと思いますが、Accessではどうすればよいか分からないのでご教示ください。 Accessは2000を使用しています。

  • エクセルの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となり、正しい値を表示します。どうしてでしょうか? 以上、よろしくお願いします。

  • エクセル関数式の質問です。宜しく!

    いつも大変お世話になっております。エクセル表内で、下記の様な時の関数式はどんな関数式になるのですか?よろしくお願いいたします。 A1~D1に月日を入れる(入れない時も有る)。入れた月日分に”400”を掛けてE1に自動計算する関数式はどんな式を入れたらいいのですか?ご教授よろしくお願いいたします。    A  B  C  D  E 1  4/5 5/2 800 2       3/6    400      ー 以 上 ー

専門家に質問してみよう