• ベストアンサー

エクセルのIF関数式について

エクセルのIF関数式を教えてください。 例えば、F2、G2、H2、I2のうち、それぞれに、Xを入力した場合、Xを入れたところだけ拾ってきて、それがF2とH2にXが入っているば場合、E2に、”AA/CC”と拾ってきたところを”/”(スラッシュ)でつなげて表示したいのですが、どうすればいいでしょうか。=IF(F2="X","AA) これだとF2にXが入っているときにE2に”AA”と表示されますが、これが複数の場合、”/”でつなげて表示がしたいです。お願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

一番シンプル: =SUBSTITUTE(TRIM(IF(F2="X","FF ","") & IF(G2="X","GG ","") & IF(H2="X","HH ","") & IF(I2="X","II ",""))," ","/") #まぁ使える関数は幾つかありますが,どうやっても似たり寄ったりの手口になります。

mike2003
質問者

お礼

ありがとうございます。これが一番シンプルな方法でうまくいきました。本当に助かりました。

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

う~ん、美しくないけどこんな感じかなぁ =IF(COUNTA(F2:I2)=0,"",SUBSTITUTE(IF(F2="×","AA/","")&IF(G2="×","BB/","")&IF(H2="×","CC/","")&IF(I2="×","DD","/"),"//",""))

mike2003
質問者

お礼

早速のアドバイスありがとうございます。

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

こんばんは! 関数でやろうとすると、何列かの作業用の列が必要になってくると思います。 そこでお望みの方法ではないかもしれませんが、VBAでの一例です。 セル配置は↓の画像のようになっているとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 ※ 表内の「X」はエックスの大文字にしています。(×「バツ」ではありません) (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim str As String On Error Resume Next For i = 2 To UsedRange.Rows.Count str = "" For j = 6 To 9 If Cells(i, j) = "X" Then '←「X」はエックスの大文字にしています。 str = str & Cells(1, j) & "/" End If Next j Cells(i, 5) = Left(str, Len(str) - 1) Next i Columns(5).AutoFit End Sub 'この行まで こんな感じではどうでしょうか? ※ 他に良い方法があればごめんなさいね。m(_ _)m

mike2003
質問者

お礼

ありがとうございます。実際の画面までつけていただき大変恐縮です。

関連するQ&A

  • 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で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルの2000で下記のような式を作りたいのですが、#VALUEにな

    エクセルの2000で下記のような式を作りたいのですが、#VALUEになってしまいます。 D1~I1が空白であれば、J1にI2を表示、 E1~I1が空白であれば、J1にD2を表示、 F1~I1が空白であれば、J1にE2を表示、 G1~I1が空白であれば、J1にF2を表示、 H1~I1が空白であれば、J1にG2を表示、 I1~I1が空白であれば、J1にH2を表示、 D1~I1がどれも空白でない場合も、J1にI2を表示します。 =IF(D1:I1="",I2,IF(E1:I1="",D2,IF(F1:I1="",E2,IF(G1:I1="",F2,IF(1:I1="",G2,IF(I1:I1="",H2,I2)))))) ネスト回数には引っかかっていないと思うのですが、IF関数の論理式は複数のセルを選択出来ないんですかね? D~H2のセルには=SUM(D15:I15)/SUM(D1:I1)といった数式が入っており、パーセンテージで小数点以下第二位まで表示しています。 うまく表示できる方法をどなたか教えていただけないでしょうか? 逆に D1だけが空白でなければ、D2を表示、 D1~E1だけが空白でなければ、J1にE2を表示、 D1~F1だけが空白でなければ、J1にF2を表示、 D1~G1だけが空白でなければ、J1にG2を表示、 D1~H1だけが空白でなければ、J1にH2を表示、 D1~I1だけが空白でなければ、J1にI2を表示、 D1~I1の全てが空白の場合は、J1にI2を表示、 でもかまいません。 どうかよろしくお願いします。

  • IF関数で出来ないのかな?

    E13のセルにa,i,u,e,oが入力されたら、AA2:AA28から参照してZ2:Z28を現す事は以下の式でやっとこさ出来ました。 =IF(E13="a",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13:E13="i",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="u",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="e",(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(E13="o",(LOOKUP(E13,AA2:AA28,Z2:Z28)),""))))) が!!! 今度はその逆でE13のセルにa,i,u,e,o以外が入力されたらAA2:AA28から参照してZ2:Z28を現す事が出来ません!! NOT関数で出来ると思って以下の式を作ったんですけど、 =IF(NOT(E13="a"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="i"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="u"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="e"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),IF(NOT(E13="o"),(LOOKUP(E13,AA2:AA28,Z2:Z28)),""))))) これだと何故かa,i,u,e,oを含め全てで参照して表してしまいます。 また他にも IF(C13="i",IF(C13="u",IF(C13="e",IF(C13="o","",(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))),(LOOKUP(C13,AA2:AA28,Z2:Z28))), (LOOKUP(C13,AA2:AA28,Z2:Z28))) というようにNOT関数を使わずに"真"と"偽"逆にしてみたんですけど 結果はNOT関数と同じでした。 なぜ?分らない・・・。 とりあえずa,i,u,e,o以外が入力されたらAA2:AA28から参照してZ2:Z28を現す方法を教えて下さい。 そして余裕があれば、NOT関数と"真"と"偽"逆にした時に全てで参照して表してしまうのかも教えて欲しいっす!! ちなみにE13=MID(B3,2,1)となっていて、B3にある文字列から一文字抜いた状態です。

  • IF関数の計算式で質問です。

    エクセルが苦手で困っています。 以下の2つのIF関数がどういった計算式(言葉で表現すると何を求めているのか?)なのか解明していただけないでしょうか。 式が長すぎてエクセル初心者の私にはわかりません。 仕事に必要なエクセルの資料で前任者が作成した計算式です。 前任者が辞めてしまい連絡が取れないため困っています。 IF(I6=0,"",ROUND((0.3*(1+F26/100+F31/100)+IF(E6>=3,F36/100,(F43+F51*0.81)/100))/(1+IF(E6>=3,F36/100,(F43+F51*0.81)/100))*100,2)) IF($I$6=0,"",ROUNDUP(($M$72/100+$M$74/100*($F$26/100+$F$31/100)+IF($I$6>100000000,($F$43+$F$47*1.48)/100))/(1+IF($I$6>100000000,($F$43+$F$47*1.48)/100))*100,2)) お手数をおかけしますが、よろしくお願いします。

  • エクセル2010 IF関数について

    以下のような表を作成中です。 H6 =H7 H7 =E10 H8 =E10 H9 =E10 H11 =IF(AND(H$8>=$E11,H$8<=$F11),"1",IF(OR(H$8>=$F11,H$8<=$G11),"2","")) H11の条件付き書式は以下のようになっています。 H11 =H11="1" 緑に塗りつぶし H11 =H11="2" 赤に塗りつぶし H11の関数についてご教示お願いいたします。 E11に開始日、F11に終了日、G11に遅延の日付を入力するようになっています。 G11に日付が入っていなければE11とF11の日付を、 G11に日付が入っていればE11とF11、F11とG11の日付を 条件付き書式でそれぞれ塗りつぶしたいのですが、 今のH11のIF文だと遅延の日付が入らなくても赤く塗りつぶされてしまいます。 G11が空欄なら・・・と付け加えたいのですが、うまくいかずに困っています。 そもそものIF文にも自信がないのですが、 上記のようなことが出来るようにするには、 どういった関数にすればよいのかご教示願います。 よろしくお願いいたします。

  • エクセルでIF関数について

    =IF(E19>=100000,E19-100000,0) この関数式が入力されているセルはE19のセルが10万以上の場合10万を引いた数が表示されますが、例えばE19のセルが178000の場合、78000というように表示されます。ところが、千単位以下を全部0000表示し万単位以上の数字だけを表示させる場合どのような関数式になるのでしょうか?例えば、E19のセルが178000の場合、70000という具合にです。わかる方ぜひ教えてください。よろしくお願いします。

  • エクセル IF関数の複数条件設定の仕方教えてください。

    エクセル IF関数の複数条件設定について教えてください。 E1の値が下のような場合にF1に%を表示する 3200000 以上 3300000 未満の時 1.0%を表示する 3300000 以上 3400000 未満の時 1.5% 3400000 以上 3500000 未満の時 2.0% 3500000 以上 3600000 未満の時 2.5% という関数を作りたいのですが、 =IF(2200000<E15<2300000,-12.9%,(IF(2300000<E15<2400000,-10.9%))) のような形で良いかと思ったのですが、上手くいきません。 是非教えていただきたいのでよろしくお願いします。

  • エクセルのIF関数で数式をつなげたいのですが…

    エクセルのIF関数で A B C D E F 4月5月6月7月8月9月         田中 たとえばF列に名前が入っていれば、その列の月を表示させたいのですが、 =IF(A3<>"","4月","")+IF(B3<>"","5月","")+IF(…+IF(F3<>"""9月","") というような式を入れると#VALUE!と出てきてしまいます! 何か良い方法はないでしょうか? よろしくお願いいたします。

  • if関数の書式ですが

    ロータスで使用していたif関数をエクセルに置き換えたいのですが、ロータスの@はエクセルで=は判ります。 以下の2つの書式で D4やH3の前についている+は何かの意味があるのでしょうか? 無くても良いような気がするのですが よろしくお願い致します @if(+D4+E4=0," ",D4*E4) @if(F4+G4=0," ",+H3+F4-G4)

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

    エクセルIF関数について エクセルのIF関数を利用して、重複するデータを抽出したいと思っています。 エクセルのIF関数を利用したことがないため、別の対応策があれば そちらも教えていただけませんでしょうか・・ 宜しくお願いいたします。 下記のようにA列に入っている1,2,3,4,5があり重複しているものをD列に一つにまとめ重複している1、5の合計分と重複していないものをEに表示させたいと思っています。     A  B     D   E 1  1  123    1  249 2  1  3      2  3 3  1  123    3  345 4  2  3      4  234 5  3  345    5  1665   6  4  234     7  5  555 8  5  555 9  5  555 D1、E1にはどのような関数で対応するのが適しているのでしょうか?

専門家に質問してみよう