- ベストアンサー
excel関数 matchの使い方について
早速質問します。 行 A B C 1 2 2 2 4 3 5 4 3 5 8 6 2 C1セルにMATCH(B1,A1:A6,0)を式を入れるとA1セルに「2」という値があるので、C1には戻り値として「1」が返ると思うのですが、続けてC2セルに続きの検索を行いたい(A6セルに「2」というデータが入っているのでC2セルには「5(=6-1)」という結果を期待してます)のですが、うまくいく方法が思いつきません。 知恵をお貸しいただけないでしょうか? MATCH(B2,A1:A6,0)と第1セクションに手動で「B2」といわれと、目的の結果が得られますが、汎用性を持たせるため自動で結果が入れれるようにしたいのでお願いします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- エクセルの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となり、正しい値を表示します。どうしてでしょうか? 以上、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- MATCH関数について。
いま、情報処理検定2級の勉強をしています。 そこでINDEX関数を用いる問題が出たので、INDEXとMATCHのネストを作りました。 =INDEX($C$20:$F$24,MATCH(G5,$C$19:$F$19,0),MATCH(H5,$B$20:$B$24,0)) こんな感じになりました。 でも、エラーが起きました。MATCH(H5,$B$20:$B$24,0))のところのセルH5には「1」とあり、B20:B24には「1回目」~「5回目」とセルに入力してありました。なので、一致しないからだと思いました。 そこで質問です。このような場合、どのようにすればエラーが起きないで戻り値が出るのでしょうか。 わかりにくい文章ですけど、教えてください。
- 締切済み
- オフィス系ソフト
- VBA Match関数の使い方について
お世話になります ご教示頂けたら幸いです シート結果セルE4の値を検索してシート結果G4の値を 検索行のB列に値を転記したいです 下記のように書くとMatch関数行でエラーが出てしまいます どの様にすればいいのでしょうか? お手数おかけしますが 何卒よろしくお願いいたします With Sheets(Worksheets("結果").Range("A4").Value) WorksheetFunction.Match(Worksheets("結果").Range("E4").Value, Range("A1:A1000"), 0).Offset(3) = _ Worksheets("結果").Range("A4").Offset(2).Value End With
- 締切済み
- Excel(エクセル)
- エクセルVBA MATCHをユーザー定義関数で使う
ユーザー定義関数の質問です。 ある値をB列で探し、見つけたセルの行番号を取得したいのですが分かりません。 条件が一つあってそれはAの値が10以下のものは検索から除外するということです。 例 A B 6 50 5 45 7 2 12 45 11 9 例えばBが45かつAの値が10以上であるセルの行番号はこの例だと4になります。 ワークシート関数を使うと{=MATCH(45,(A1:A5>=10)*(B1:B5),0)}でできました。しかしユーザー定義関数で.Match(45, Worksheets("Sheet1").Range("A1:A5>=10") * Worksheets("Sheet1").Range("B1:B5"), 0)とやっても#VALUE!となってしまいました。何がおかしいのでしょうか。
- ベストアンサー
- Visual Basic
- ExcelのMATCH関数の検査範囲の指定について
Excelで、指定した値の場所(行番号)を返すというのをMATCH関数を用いてやっているのですが、検査範囲の指定が上手く処理することができないので教えて下さい。 条件---------------------------------------------------------------------------------------------------------------- 2つのExcelファイル、DATA.xlsx と TEST.xlsx を用いる。 DATA.xlsx内に「B19」というシートが存在し、このシート内のB列にある"7777"という値が存在する行番号をTEST.xlsx内のセルに表示させる。 ----------------------------------------------------------------------------------------------------------------------- まず、 =MATCH(7777,[DATA.xlsx]B19!$B:$B,0) で正しい値が返ってくることは理解しています。 この式の中の、B19というシート名について、 この式が存在するシートと同じシートの適当なセル(ここではA33を使うことにします)にB19 という値が存在するとします。このA33のセルにある値を見て値を返す、何がしたいかといいますと、将来参照するシートがB19ではなく例えばB15であったり、B6とした場合、A33のセルの値を変更すればよいというものにしたいのです。 それで、 =MATCH(7777,"[TEST.xlsx]"&$A33&"!$B:$B",0) としてみたのですが、#VALUE!が返ってきます。 何処が間違っているのか?教えてください。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- preg_matchのキャプチャ用サブパターンにマッチした文字列について
お世話になります preg_matchのキャプチャ用サブパターンにマッチした文字列について 意図した動作が、試行錯誤しても全く得られませんので 分かる方にお教えいただきたく存じます 条件1 [*DATA: *]で囲まれたデータ(以下DATA)を取得 条件2 DATAにはoXoまたはoYoが順不同で、それぞれ1回または0回出現する $test = '[*DATA: A oYo B oXo C *]'; $reg = '/\[\*DATA:(.*?)(oXo|oYo)(.*?)(oXo|oYo)?(.*?)\*\]/u'; preg_match($reg,$test,$match); $matchの結果 $match[0] => [*DATA: A xYx B xXx C *] $match[1] => A $match[2] => oYo $match[3] => $match[4] => $match[5] => B oXo C 期待した結果 $match[0] => [*DATA: A oYo B oXo C *] $match[1] => A $match[2] => oYo $match[3] => B $match[4] => oXo $match[5] => C 1回または0回を表す「(oXo|oYo)?」が「0回」という条件が先に評価されてしまっているようなのですが「1回」を先にするすべはあるのでしょうか? 「(oXo|oYo)?」を「(oXo|oYo)」にすると期待した結果になりますが、条件2の「oXoが0回」「oYoが1回」出現した場合マッチしなくなります。 識者の方、お忙しい中恐縮ですがご教授いただけたらうれしいです。
- ベストアンサー
- PHP
- EXCEL関数について。
EXCEL関数について。 下記関数にて、値の取得を行うようにしましたが、 この関数使用時のエラー(#N/A)が 出ないようにする為の数式を教えていただけませでしょうか? 【現在の数式】 =INDEX('01'!$T$8:$W$14,MATCH($C$12,'01'!$S$8:$S$14,0),MATCH($G12,'01'!$T$7:$W$7,0)) この数式の内、最初のMATCH関数 MATCH($C$12,'01'!$S$8:$S$14,0) の中の S8~S14までのセルの間に参照値 C12 の値がない場合に、エラーが出ないように したいのですが、その数式を教えていただけないでしょうか?
- ベストアンサー
- オフィス系ソフト
- INDEX関数?それともMATCH関数?
INDEX関数?それともMATCH関数? エクセル2000で下記の様な事をしたいのですが、どうしても分からず思い悩んでいます。 どなたか分かる方がいらしたら、教えてください。 【この表について】 ・予測A(行3)と予測B(行20)と予測(行30)は最初から入っている数値 ・結果A(行4)と結果B(行21)に左から1クール終わるごとに数値が入力される ・結果A(行4)と結果B(行21)に数値が入ると、実績(行31)が表示される ・(行38)と(行39)は予測Aに対する予測Bの割合 【やりたいこと】 <黄色のセル> (1)B31が表示されたらB38を表示 (2)B31~C31が表示されたらC38を表示 (3)B31~D31が表示されたらD38を表示 (4)B31~D31が全て空白ならばD38を表示 (FGHについても同様に表示させたい) →現在の数式は(1)~(3)についてはできるのですが、(4)の場合に#N/Aとなってしまいます。 <赤色セル> (1)B31が表示されたらB38を表示 (2)B31~C31が表示されたらC38を表示 (3)B31~D31が表示されたらD38を表示 (4)B31~D31とF31が表示されたらF39を表示 (5)B31~D31とG31が表示されたらG39を表示 (6)B31~D31とH31が表示されたらH39を表示 (7)B31~D31とF31~H31が全て空白ならばH39を表示 →これもINDEXやMATCHを使って色々考えてみたのですが、(7)の時が#N/Aとなってしまいます。 どうぞよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 関数MATCHを利用して、該当がある場合のみ数字を出したい
お世話になります。 シートの中に重複データそれがどのデータと一致しているかセル番号を出す関数をつくりたいと調べています。 http://oshiete1.goo.ne.jp/qa2495843.html こちらで紹介のあったようにMATCHを使って、 たとえばA列に名前が入っていた場合、となりのB列に =MATCH(B2,B:B,0) といれてみました。 すると一致している場合は、その一致しているセルの行番号が出るのですが、一致するものがない場合は、そのB列の行番号が出ます。 これを、一致するものがある場合のみ、数字を表示する、としたいのですが、どのようにすればよいでしょうか。 イメージとしては もし B2と(MATCH(B2,B:B,0)の結果)が一緒なら空白にする もし B2と(MATCH(B2,B:B,0)の結果)が違ったら(MATCH(B2,B:B,0)の結果)を表示する といった感じです。 空白は、0と入力されてもいいです。 アドバイス、ご指導お願いいたします。
- ベストアンサー
- オフィス系ソフト
- vlookupに、Indirect と Match 関数を組み合わせる
vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。 ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。 たとえば、 Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency) Book2には、 シート1: InputName シート2: Output シート2に以下の関数を入れてみましたが、うまくいきません。 ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか? =IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
わざわざ2度も回答を下さりありがとうございました。 無事解決いたしました。 INDIRECT関数の存在を知りませんでしたので、今回非常に勉強になりました。 ありがとうございました。