• ベストアンサー

この関数文の意味を教えてください。

31歳の男です。 下記の関数文の意味(訳)が分かりません。 教えて頂けないでしょうか? =INDEX(sheet2!F:F,MIN(INDEX(SUBSTITUTE((sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,sheet2!F1:F100)),0,10^5)*ROW(sheet2!F1:F100),))) 宜しくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

>SUBSTITUTE((sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,sheet2!F1:F100)),0,10^5) ◆SUBSTITUTE(・・・・・・・・・,0,10^5) はmaronが使う式なのでmaronの回答かも知れません ◆この式の意味は 1)(Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!F1:F100)) ★「Sheet2のA1:A100のうちで、E9と同じ」でかつ「Sheet2のF1:F100のうちで、E10の文字(または数字)が含まれている」 2)SUBSTITUTE((Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!F1:F100)),0,10^5) ★式を入力しているセルを指定して、(Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!F1:F100)) の部分を指定して、「F9」を押してください ★{0;0;0;0;0;0;1;0;1;1;0;0;0;0;0;・・・・・} のように1)の条件に合致したものが、上から1で表示されています ★この「0」を、10^5 に置換する式です 3)*ROW(Sheet2!F1:F100) ★それに、ROW(Sheet2!F1:F100) すなわち行番号を掛けると {100000;200000;300000;400000;500000;600000;7;800000;9;10;1100000;・・・・・・} ★7、9,、10(この例では)行目がが条件に該当します 4)MIN関数で、これの一番小さい値(一番上の行番号)を抽出します 【SUBSTITUTE(・・・・・・・・・,0,10^5) をしないと一番小さな値は「0」になります】 5)INDEX(sheet2!F:F のうちから、4)で計算された行を表示します ◆具体例がないので、式単独の説明で分かりにくいかもしれませんがこんなことでしょうか

tatuya24_2006
質問者

補足

丁寧なご回答ありがとうございました。 が、初心者ゆえに私には難しいです。 (2)SUBSTITUTE関数がよく分かっておりません。   この関数はどういった場合に使用するのでしょうか?(どんな役割があるのでしょうか?) (3)ROW関数は普通は行番号をかえしますが、今回はどのような使い方 をしているのでしょうか? 要は、この行は「~関数で~をしている」といった簡単なことで 結構ですので、申し訳ありませんが教えてもらえないでしょうか?

その他の回答 (1)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

>SUBSTITUTE関数がよく分かっておりません。 SUBSTITUTE(文字列,検索文字列,置換文字列[,置換対象]) ・文字列のうち検索文字列を置換文字列に置換する関数です ★ヘルプでご自身で確認されることをお勧めします >ROW関数は普通は行番号をかえしますが、今回はどのような使い方 をしているのでしょうか? ・ROW(A1) と入力して下にコピーしてください ・1,2,3・・と表示されるはずです。 ・ですから、ROW(Sheet2!F1:F100) は、1,2,3,4・・・・99,100 となります ★前回答の下の操作を是非行ってください ★式を入力しているセルを指定して、(Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!F1:F100)) の部分を指定して、「F9」を押してください ★範囲を広げて同じように確認してください、きっとその式の意味が理解できると思います >要は、この行は「~関数で~をしている」といった簡単なことで・・・ ★関数で「Sheet2のA1:A100のうちで、E9と同じ」でかつ「Sheet2のF1:F100のうちで、E10の文字(または数字)が含まれている」ものでSheet2のF1:F100 のうち一番上の行のデータを表示します

関連するQ&A

  • この関数文の意味を教えてもらえないでしょうか?

    下記の関数文の意味が分からないので 教えて頂けないでしょうか? =INDEX(sheet2!F:F,MIN(INDEX(SUBSTITUTE((sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,sheet2!F1:F100)),0,10^5)*ROW(sheet2!F1:F100),))) 尚、(sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,sheet2!F1:F100))の範囲を指定してF9を押すと =INDEX(sheet2!F:F,MIN(INDEX(SUBSTITUTE({1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;0;0;1;1;1;1;1;1;1;1;1;1},0,10^5)*ROW(sheet2!F1:F100),))) と表示されます。 ・SUBSTITUTEの関数は何の目的で使用しているのでしょうか? 以上、宜しくお願いします。

  • エクセルで検索し別シートに抽出したい。2007

    http://okwave.jp/qa/q6798171.html                                       上記のベストアンサーの方法で試してみましたが上手く行かなかったので、ご教授お願いします。                                                          Sheet1のAからAMにそれぞれ各項目があり、Sheet2はURLベストアンサーの画像と同様になっています。Sheet2の検索項目はO列とP列ですが、後々検索したい項目が増えた時に追加しやすい方法だと助かります。O列は仮名+数字(あ1234)P列は漢字です。                                                              Sheet1のAM2へは下記のようにしました。  =IF(COUNTA(Sheet2!$A$2:$B$2)=0,"",IF(Sheet2!$B$2="",IF(ISNUMBER(FIND(Sheet2!$A$2,B2)),ROW(),""),IF(Sheet2!$A$2="",IF(ISNUMBER(FIND(Sheet2!$O$2,P2)),ROW(),""),IF(AND(ISNUMBER(FIND(Sheet2!$A$2,B2)),ISNUMBER(FIND(Sheet2!$O$2,P2))),ROW(),"")))) Sheet2のA5には下記のようにしました。 =IF(COUNT(Sheet1!$AM:$AM)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$AM:$AM,ROW(A1)))) お手数ですがご教授よろしくお願いします。

  • エクセルで文字列検索の関数

    エクセルのワークシート関数で質問です。 「A1セルに、文字列、A、B、Cの何れかを含み、かつCDを含まない」ことを調べる関数です。 素直に、 =AND(ISNUMBER(FIND("A",A1)),ISNUMBER(FIND("B",A1)),ISNUMBER(FIND("C",A1)),NOT(ISNUMBER(FIND("CD",A1)))) と長ったらしく書けば取得できることはわかるのですが、もっと簡潔なやり方がありそうな気がします。 どうか教えてください。

  • #REF!を直したい

    31歳の男です。 下記の関数の件で悩んでいます。 お知恵をお貸しください。 (概要) ・UNIXのコマンド調査で、コマンドを過去に打ったことがあるかどうかを検索して、   ある→今後も打てる   ない→今後も打てない  といった具合に結果を出力させる関数を作成する。   (シート1)→条件指定・結果表示のシート ・過去に打った実績があるかどうかを(3つの条件から)検索して、結果を出力するシート  (条件)   E9→コマンド   E10→場所(サーバ名)   E11→目的  (結果)   E14→コマンドを打ったらどうなるか   E15→コマンドの意味   E16→コマンドを打ったことにより監視装置にエラーメッセージが出力するか   E17→コマンドが運用に影響があるか   D18→コマンドが実際に打てるかどうか    (シート2)→過去に打ったコマンド名などが入力されているDBみたいなモノ  A列7~88行目→コマンドの一覧→81種類(これからも増えます)  C列7~88行目→コマンドが実際に打てるかどうか→約2種類(○or×)  D列7~88行目→コマンドが運用に影響があるか→約2種類(ありorなし)の2種類  F列7~88行目→場所(サーバ名)→約20種類(こらからも増えます)  G列7~88行目→コマンドの意味→81種類(これからも増えます)  H列7~88行目→何の情報→81種類(これからも増えます)  I列7~88行目→コマンドを打ったことにより監視装置にエラーメッセージが出力するか→2種類(ありorなし)  J列7~88行目→コマンドを打ったらどうなるか (全関数式は下記の通りです) F9→=$E$9 & "/" & F11& "/" & $E$11 F10→=MATCH(F9,sheet2!K7:K88,0) F11→=INDEX(sheet2!F:F,MIN(INDEX(SUBSTITUTE((sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,sheet2!F1:F100)),0,10^5)*ROW(sheet2!F1:F100),))) E14→=IF(ISNA($F$10),"登録されてません",INDEX(sheet2!$A$7:$J$88,$F$10,10)) E15→=IF(ISNA($F$10),"登録されてません",INDEX(sheet2!$A$7:$J$88,$F$10,10)) E16→=IF(ISNA($F$10),"登録されてません",INDEX(sheet2!$A$7:$J$88,$F$10,9)) E17→=IF(ISNA($F$10),"登録されてません",INDEX(sheet2!$A$7:$J$88,$F$10,4)) E18→=IF(ISNA($F$10),"登録されてません",INDEX(sheet2!$A$7:$J$88,$F$10,3)) 何とか検索できるようになりましたが、 以下2点が結果として「#REF!」と表示されてしまうので、これを「登録していません」と表示するようにしたいです。 ・一覧表(Sheet2)にないコマンドを入力した場合。 ・コマンド/目的は一致しているが、場所のみ違うものを選択した場合。 以上、宜しくお願い致します。

  • EXCEL関数について

    質問があります。 エクセルのA行に 定期点検 (月度検査) ラジオ修理 ボリューム つまみ 校正 視力検査 ボールペン 発注 替芯 購入 コピー用紙 経費 ポケットティッシュ配布用    ・    ・       ・  とあるのを、B行に下記の用に変換したいのですが、 検査 修理 検査 検査 購入 購入 購入 購入 その他 その他 その他    ・    ・       ・  下記のように関数をつくったのですが、うまく動きません =IF(A1="","",IF(ISNUMBER(FIND("点検",A1)),"検査",IF(ISNUMBER(FIND("修理",A1)),"修理",IF(ISNUMBER(FIND("校正",A1)),"検査",IF(ISNUMBER(FIND("検査",A1)),"検査",IF(ISNUMBER(FIND("発注",A1)),"購入",IF(ISNUMBER(FIND("購入",A1)),"購入",IF(ISNUMBER(FIND("経費",A1)),"購入,"IF(ISNUMBER(FIND("配布用",A1)),"購入","その他"))))) わかる方がいらっしゃいましたら、どうぞ教えて下さい。

  • INDEX関数を使用した関数の意味を教えてください。

    INDEX(sheet2!C:C,SMALL(INDEX((sheet2!$B$1:$B$100<>$B$18)*10^4+ROW($1:$100),),ROW(A1)))&"" sheet2にある表のB列に検索時に使用する文字列があり、sheet1のB18にその検索したい文字列を入力すると、一致したB列と同じ行のC列のデータを抽出する式です。 表のデータは今後も増加しますが、どの程度増加するは不明です。 INDEX関数やSMALL関数など一つ一つの関数の意味はわかっているつもりですが、なぜ上記のセルが選択されているのかわかりません。 特にSMALLの後の式がわかりません。 エクセル関数にはあまり詳しくないので、この式の意味をできれば詳しく教えていただけないでしょうか? (式の意味は人から聞いたものですが、違っていたらすいません)

  • エクセルでお聞きします。

    こちらのサイトの回答を参考に、セルに下記のような式が入れました。 他のシートや他のセルにも同様の式が入っているのですが割愛致しました。 通常Sheet1のB列は空白なんですが、もし何か文字が入っていたら その行に関してはこの式を反映させない方法を教えて下さい。 (Sheet2) B列 =IF(ROW(E1)>COUNT('Sheet1'!$E$4:$E$505),"",INDEX('Sheet1'!E$1:E$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(E1)))) D列 =IF(ROW(C1)>COUNT('Sheet1'!$E$4:$E$506),"",INDEX('Sheet1'!C$1:C$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(C1))))

  • IF COUNT AND 関数で、

    IF COUNT AND 関数で、 Sheet1をデータ用名簿リストにして出欠簿を作成しています。 部門が3つに分かれているので Sheet2~4に、部門ごとに抽出されるようにし、さらに、出席の人だけ表示されるようにするのが目的です。 =IF(COUNT(Sheet1!$K:$K)<ROW(C1),"",INDEX(Sheet1!$C:$C,SMALL(Sheet1!$K:$K,ROW(C1)))) という関数で部門ごとの抽出は成功したのですが、下記関数だと出席者のみの表示がうまくいきません。 Sheet1には =IF(J1=Sheet2!$A$1,ROW(A1),"") をKに入力し、対応する部門が絞れるようにしています。 =IF(COUNT((Sheet1!$K:$K)<ROW(C1)*(Sheet1!$F:$F)=D),"",INDEX(Sheet1!$C:$C,SMALL(Sheet1!$K:$K,ROW(C1)))) なお、(Sheet1!$F:$F)=D)は、Sheet1の出席者の欄で、ここにD(出るの略)と記入しています。 使用ソフトはKingsoftです。

  • Excel 該当しない行を削りたい (関数)

    以下票の場合、Fを除いて一覧にしたいんですが、 どの様な関数にしたらいいでしょうか? 国語 A+ 数学 A 理科 F 社会 B ↓ 国語 A+ 数学 A 社会 B 以下関数までは探し当てたんですが、これだとA1に指定した科目のみになってしまいます。 =IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(B1),INDEX(Sheet1!B:B,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(B1)+1)),"")

  • SUMPRODUCT関数について

    excel2010 SUMPRODUCT関数で、式の内容が理解できず教えてください。 sheet1に、A22からAM1047までデータがあります。B,E列を参照し、 sheet2のA、Cに設定された内容で抽出するという内容になっています。 具体例を下記に示します。 sheet1の構成 A1~AM21までは題目が記載されています。抽出したいデータ対象ではありません。 A列は見出しの内容でほとんど空欄です。 A427セルに本体、以降空欄が続きA490セルにヘッド、また空欄が続きA544セルに 見出しの内容といった感じです。 B22~B30セルにX001という識別コード(同じものが9) B30~B39セルにX002という識別コード(同じものが9) 以降、識別コードがB1047セルまで入ります。 E22~E30までは、a,b,c,d,e,f,g,h,iという検索内容が入ります。 以降同じ検索内容が続きます。 H22~H1047まで数字のデータが入ります。 上記以外の列は無関係なので説明省略。 下記のイメージです。 A1からAM20までにも何かしら内容が入っていますが、関係ないので説明省略。 A21の様に記載しているのはセルアドレス、その直下は入っている内容です。 A21  B21   E21     H21 名称  コード  検索     3月2日 A22  B22   E22     H22 準備  X001   a      0     X001   b      3     X001   c      2     X001   d      5     X001   e      2     X001   f      0     X001   g      3     X001   h      0     X001   i      0     X002   a      4     X002   b      7     X002   c      0     X002   d      0     X002   e      1     X002   f      3     X002   g      0     X002   h      0     X002   i      3  … A427  B427  E427    H427 本体  X701   a      0     X701   b      0     X701   c      1     X701   d      0     X701   e      2     X701   f      3     X701   g      0     X701   h      0     X701   i      1 … A490 ヘッド X792   a      4     X792   b      7     X792   c      2     X792   d      0     X792   e      1     X792   f      3     X792   g      0     X792   h      0     X792   i      3 sheet2は A1     C1  D1 コード   検索 X001    c   2 X002    c   0 X003    c   0 X004    c   0 X005    c   0 X006    c   0 X007    c   0 X008    c   0 X009    c   0 … X701    c   1 X792    c   2 の様にコードと検索条件でD列にsheet1からデータをひっぱってきたいのです。 下記はsheet2のD27セルに設定した内容です。 =IF(SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)), INDEX(Sheet1!H$22:H$1047,SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)*(ROW(sheet1!$A$1:$A$1026)))),"-") webや過去のokwebのsumproduct関数について調べた上で上記式にたどり着き、この内容で、sheet1の内容をひっぱってくるので良いのですが、 最後の*(ROW(sheet1!$A$1:$A$1026))の部分が理解できません。 疑問の内容は、下記2点 (1)単独でROW(sheet1!$A$1:$A$1026)を実施すると1になります。 しかしながら、 =IF(SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)), INDEX(Sheet1!H$22:H$1047,SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)*1)),"-") としてフィルハンドコピーすると、全ての行が27行目の値になってしまいます。 何故1ではだめなのでしょう? (2)データの範囲はA22からAM1047なので範囲を下記の様に同じにしてみました。 *(ROW(sheet1!$A$1:$A$1026))→*(ROW(sheet1!$A$22:$A$1047)) とすると全く正しく抽出されません。0になってしまいます。 *(ROW(sheet1!$A$1:$A$1026))が*(ROW(sheet1!$A$1:$A$1025)) の様に設定すると#N/Aとなり、抽出する設定条件で必要なのですが、 この*(ROW(sheet1!$A$1:$A$1026))の意味を教えていただきたく。

専門家に質問してみよう