EXCELのIF関数で値を表示する方法

このQ&Aのポイント
  • EXCELのIF関数を使って、特定の条件に基づいて値を表示する方法について説明します。
  • 質問文章では、9つのセルに1~15の数が入っており、その値と同じ列の数字の下の値を別のセルに表示したいという要望があります。
  • しかし、試してもうまく表示されないという問題が発生しています。良い解決策を持つ方のアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

EXCELのIF関数について

9セルA1~J1に1~15の数のうちの10個が一つずつ入っており、セルA3~J3にも1~15の数が入っています。またA2~J2には、A~Jまでの英字が入っています      1 2 15 9 7 6 5 4 11 3        A B C D E F G  H  I  J       2 3 5 7 9 10 11 12  13 15   のとき                                          B J G E D    I        C   のようにA3列の値と同じ1列の数字の下の値を            A5 列に表示したいのですが、何度やってもできません。      良い知恵をお持ちの方、よろしくおねがいします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

A5セルには次の式を入力してJ5セルまで横方向にドラッグコピーします。 =IF(A3="","",IF(COUNTIF($A1:$J1,A3)=0,"",INDEX($A2:$J2,MATCH(A3,$A1:$J1,0))))

handenasi
質問者

お礼

申しわけありません。64歳EXCEL勉強中のものにつき理解できないことが・・・ 勉強します。

その他の回答 (5)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

少し解説を =IF(SUMPRODUCT(($A$1:$J$1=A$3)+0)<1,"",OFFSET($A$2,0,MATCH(TRUE(),INDEX($A$1:$J$1=A$3,,),0)-1,1,1)) ですが、 まずは SUMPRODUCT(($A$1:$J$1=A$3)+0)<1 からいきます。 ($A$1:$J$1=A$3) は A1:J1の範囲にA3と同じ物があるか1つ1つ確認させています 回答は同じな場合TRUE、違う場合FALSEです お示し頂いた例になぞらえると A1はA3と同じではないのでFALSE B1はA3と同じなのでTRUE C1はA3と同じではないのでFALSE D1はA3と同じではないのでFALSE ……… …… … … … J1はA3と同じではないのでFALSE となります。 実際の値としては {FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FLSE,FALSE,FALSE} です。 ところで、 Excelでは FALSEは0に、TRUEは1に置換される作用があります。 また 0+0は0,1+0は1,0*1は0,1*1は1ですから 従って {false,true,false}+0 は、 {0,1,0} に、置換されます。 ($A$1:$J$1=A$3)+0 は、 {0,1,0,0,0,0,0,0,0,0} と、成るわけです。 本来の使い方ではないですが、 =SUMPRODUCT({0,1,0,0,0,0,0,0,0,0}) と、した場合 SUMPRODUCTは此等の総和を計算してくれます。 回答はこの場合「1」ですね。 総じていえば 「TRUE」が1つ以上あれば SUMPRODUCTは1以上を返します。 SUMPRODUCT(($A$1:$J$1=A$3)+0)<1 とすれば、一致しているものが無いか調べられるわけです。 さて、後半部分の OFFSET($A$2,0,MATCH(TRUE(),INDEX($A$1:$J$1=A$3,,),0)-1,1,1) ですが、 OFFSETについてはヘルプやネットをご参照ください 単純な物です。 MATCH(TRUE(),INDEX($A$1:$J$1=A$3,,),0) ですが、 キモは $A$1:$J$1=A$3 です。 先程の説明通り、 {FALSE,TRUE,FASE,…} Excelがよこす答えはこうですね。 所で Excelでは「FALSE」より「TRUE」の方が大きい と、いうことになっています。 「TRUE」をMATCHに探させているとき MATCHはTRUEが出た時点でそれ以降の検索を止めます。 従って MATCHにとって =MATCH(TRUE,{FALSE,TRUE,False,False,False,False},0) =MATCH(TRUE,{FALSE,TRUE},0) この双方は 「TRUE」の時点以降を見ないので 同じ扱いとなります。 つまり どちらも昇順に並んでいることになるわけです。 因みにExcelのよこす回答は「2」ですね。 如何でしょうか? お役に立てていたならば幸いです。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

私もHLOOKUPと思ったのですが先行回答があるようで、… 滝汗 しかも、よく見ると昇順とも限らないようで… ならば… と、OFFSETを使ってみます。 =IF(SUMPRODUCT(($A$1:$J$1=A$3)+0)<1,"",OFFSET($A$2,0,MATCH(TRUE(),INDEX($A$1:$J$1=A$3,,),0)-1,1,1)) これだと順不同でも、いやいやそもそも値そのものが無くても平気ですね。 A5に入力後 J5までフィル、又はコピーください。 如何でしょうか? お役に立てていたならば幸いです。

handenasi
質問者

お礼

本当に、本当に申し訳ありません。頭がチンプンカンになってしまいました。頭を冷やしてから再度挑戦してみます。皆さん、ありがとうございました

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

こんにちは! すでに回答は出ていますので、参考程度で・・・ =IF(COUNTIF($A1:$J1,A3),HLOOKUP(A3,$A1:$J2,2,0),"") という数式を入れ列方向にオートフィルでコピーでもOKだと思います。m(_ _)m

handenasi
質問者

お礼

ありがとうございます。みなさんは、どんな勉強をしているのですかね? これからは、勉強の仕方を勉強します。

noname#203218
noname#203218
回答No.3

ISERROR 又はIFEROOR使用出来ますが、バージョンにより利用制限があります。IEERRRORは2007以降でも利用可 2003以下のバージョン A5=IF(ISERROR(HLOOKUP(A3,$A$1:$J$2,2,0)),"",HLOOKUP(A3,$A$1:$J$2,2,0)) 2007以降のバージョン A5=IFERROR(HLOOKUP(A3,$A$1:$J$2,2,0),"") 質問時は使用しているソフトのバージョン記載は必須ですので、今後は記載下さいね。

handenasi
質問者

お礼

申しわけありませんでした。 やはり、これも難しそうです。 勉強します。

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

IF関数だと面倒すぎますね。HLOOKUP関数を使うべきです。 A5=HLOOKUP(A3,A1:J2,2,FALSE) B5=HLOOKUP(B3,A1:J2,2,FALSE) C5=HLOOKUP(C3,A1:J2,2,FALSE) : : J5=HLOOKUP(J3,A1:J2,2,FALSE) のように入力すればOKです。ただし該当する値が無いセルは「#N/A」ってエラー表示になりますが。

handenasi
質問者

お礼

ありがとうございます。私なりになんとか出来た?? ように思うのですが でも、少し違うような感じです。 関数の初歩の勉強が足りないようです。急ぎすぎですね!

関連するQ&A

  • エクセル関数について

    エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルでこんなIF関数って作れますか?

    A B | C D E F G 10 5 | 3 5 6 7 6 すこし分かりにくい説明かもしれませんがご了承下さい。 セルA 上限値 セルB 下限値 セルC~Gは測定値 とします。 セルC~セルGの値が セルAとセルBの間から外れていれば、その値のセルの色を 赤色に変えたいのですが、このようなIF関数って作れるのでしょうか? お詳しい方いましたら、ご教授願います。

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

    8通りの場合が考えられて その中で該当する答えを入力するようにしたいのですが 私では分かりません。 1つ目 D1セルの値がE1セル値より5枚以下少なく 且つ   G1セルの値の数字がプラスの時 以上の時は 結果Aとする 2つ目 D1セルの値がE1セル値より5枚以上少なく 且つ   G1セルの値の数字がプラス10点以上の時 以上の時は 結果Bとする 3つ目 D1セルの値がE1セル値より少なく 且つ   G1セルの値の数字がマイナス10点以内の時 以上の時は 結果Aとする 4つ目 D1セルの値がE1セル値より少なく 且つ   G1セルの値の数字がマイナス10点以上の時 以上の時は 結果Cとする 5つ目 D1セルの値がE1セル値より多く 且つ   G1セルの値の数字がプラスの時 以上の時は 結果Dとする 6つ目 D1セルの値がE1セル値より5枚以上多く 且つ   G1セルの値の数字がマイナス10点以内の時 以上の時は 結果Eとする 7つ目 D1セルの値がE1セル値より多く 且つ   G1セルの値の数字がマイナス10点以内の時 以上の時は 結果Cとする 8つ目 D1セルの値がE1セル値より多く 且つ   G1セルの値の数字がマイナス10点以上の時 以上の時は 結果Fとする このときに、H1セルに8つの答えの中から該当する物を選び結果AからFを自動的に入れるようにしたいのですが、H1にはどのような関数を入れれば良いでしょうか?

  • Excelのif関数を使ったのですがうまくいきません。

    Excelのif関数を使ったのですがうまくいきません。   | A | B | C | D | E ----------------------- 1 | A | A | A | A | 5 2 | B | A | A | B | 4 3 | C | C | A | C | 2 のようにA1~D4のセルに入力されたA,B,C の組み合わせによって E5のセルに1~5の数字を入れていきたいのですがAAAA~CCCCの組み合わせが 15通りあってif関数では入れ子ができません。 AAABもAABAも同じと判断させて1~5の数字を自動的に入力させたいのですが 何かいい方法はないでしょうか。 教えてください。

  • エクセル関数の詳しい方ご教示ください。

    エクセルの詳しい方、ご教示ください。 A B C D E F G(表示したい列) 1行目 2 3 5 7 9 2 =知りたい関数 2行目  4 5 8 9 1 2 上記のようなランダムな数値データがあり、 ・Aの列に表示している数字の数だけ、 ・Bから右の列に移動した数字を、 ・Gの列に表示したい と、思っています。 例で考えると、 G1のセルは7 G2のセルは2 と表示されるイメージです。 Gにはどのような関数を使えばよいでしょうか?

  • Excelの関数『IF』にて・・・

    EXCELにて、関数IFを使って一覧表から 自動入力をしたいと考えています。 例えば、以下のようにしてセル『C1』の数字に 応じて、自動を試みたい時 =IF($C$1>80,"=A1",IF($C$1>70,"=B1","=C1")) =A1,=B1,=C1 の場所を文字列としてしか読み取ってくれません =A1,=B1,=C1では無く=A1,=B1,=C1のセルに入力されてる 数式(他のセルの値)を、表示したいんですが どのようにすれば可能でしょうか? 何度やっても「=A1」と、そのまま文字列として出て来ちゃいます。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • EXCEL IF関数に関する質問

    EXCELです。よろしくお願いします。 A列(A1~A300まで) に0~100までの数字が入っています。 B列に80以上100以下ならA、    60以上79以下ならB、    40以上59以下ならならC、    20以上39以下ならD、    0以上19以下ならEを 入れたいのです。 そして C列にB列がAなら5、    B列がBならば4、 B列がCならば3、 B列がDならば2、    B列がEならば1 を入れたいのです。 B1とC1のどのような関数を入れればよいですか。 教えてください。 よろしくお願いします。  

  • エクセルのネスト回数について(IF関数)

    こんにちは。昨日も同じような質問をしたのですが、うまくいかないので再度詳細を書いて質問させていただきます。 まず、A1にはドロップダウンリスト(以後DL)でAとBが選べるようにしています。A1の値に応じてBはそれぞれに対応したDLがでるようになっています。仮にAに対応するリストをa,b,c、Bはα,β,γ、とします。ここまではできているのですが、次にC列、D列、E列も同じくB列の値に対応したDL(C,D,Eは別の内容のリスト、例えばB列がaならC列はa1,a2,a3、D列はb1,b2,b3、bならC列はd1,d2,d3、D列はe1,e2,e3)が表示されるようにしたいのですが、もう一度この例を参考にご教授ください。ただし、実際にはB列の項目が13あります。ここが引っかかっています。よろしくお願いします。

専門家に質問してみよう