• ベストアンサー
  • 困ってます

エクセル IF式について、

先日からこちらで=IFとisnumberの使い方を教えていただき、次のような式を作りました。 =IF(isnumber(C2),B2+C2+F2+G2+J2+K2,"") これで(C2)に数値がある時のみ計算結果を打ち返し、文字その他は空欄で、が出来ました。 次にやりたいことは、(C2)と(G2)と(K2)のいずれかに数値がある時に計算させる式はどのようにすればよろしいでしょうか? 以下の4つを試しましたがNGでした。 =IF(isnumber(C2,G2,K2),B2+C2+F2+G2+J2+K2,"") =IF(isnumber((C2)*(G2)*(K2)),B2+C2+F2+G2+J2+K2,"") =IF(isnumber((C2)OR(G2)OR(K2)),B2+C2+F2+G2+J2+K2,"") =IF(ISNUMBER((C2)*OR(G2)*OR(K2)),B2+C2+F2+G2+J2+K2,"") よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数154
  • ありがとう数3

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

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

次のようにしてはどうでしょう。 =IF(COUNT(C2,G2,K2)>0,SUM(B2,C2,F2,G2,J2,K2),"") この式の意味はC2,G2,K2セルのいずれかに数値が有ればB2,C2,F2,G2,J2,K2の値を積算しなさいとなります。 B2+C2+F2+G2+J2+K2の式の場合にはいずれかのセルの値が文字列になっている場合には計算が行われずにエラーとなります。それに対してSUM関数の場合には文字列で書かれたセルが有ってもそれを計算に含めないで計算してくれます。 したがって上の式のIF関数を使うこともなく=SUM(B2,C2,F2,G2,J2,K2)のみでも十分なように思いますね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答、有難うございました。 教えていただいたCOUNTの方法でバッチリ成功しました。 SUMを使わないでB2+C2+F2+G2+J2+K2も試してみましたが、前段のCOUNT(C2,G2,K2)>0で文字は弾かれるようでエラーは出ませんでした。 KURUMITO様には今回で3回も正しい解答をいただき感謝です。 有難うございました。

関連するQ&A

  • EXCEL関数使用で結果が理解できません

    OS:WindowsXP EXCEL2000 以下の表が既に作成されています。 行 :O(英文字オーです) ------------------ 列 6 | 96 7 |216 8 |216 9 |185 10 |(空欄) 11 |(空欄) ここで、セルR6に以下の式が入力されています。 =INDIRECT("R"&MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))&"C"&COLUMN(O6:O11),FALSE) セルR6には185が表示されているため、空欄でない最後の行の数値を 出力させる式のようなのですが、よく理解できません。 ISNUMBER(O6:O11)は全部数値だった場合にTrueになるのですか? ROW(O6:O11)は6でした。 IF(ISNUMBER(O6:O11),ROW(O6:O11))はFALSEです。 MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))は0です。 COLUMN(O6:O11)は15です。 どなたか知恵をお貸しください。

  • 入力した数値を元にその他の数値を効率よく求める方法

    お世話になります。 Excelの関数について質問させていただきます。 図を見て頂ければ早いかとは思いますが、元の量(A2~A5)を基準に、 現在ある量を入力する事でその他の量が自動で計算できる式を作りたいと思っています。 現時点で試しているのは IF関数を使い、数値の入っているセルを見つける →数値が入っていれば割合を求め数量を出す →数値がなければ次のセルに移動、以下繰り返し 具体的にD2のセルには以下のような計算式が入っています。 IF(ISNUMBER($C$2),$C$2/$A$2*A2,IF(ISNUMBER($C$3),$C$3/$A$3*A2, IF(ISNUMBER($C$4),$C$4/$A$4*A2,IF(ISNUMBER($C$5),$C$5/$A$5*A2, IF(ISNUMBER($C$6),$C$6*B2," "))))) 今は5行しか入っていないので動きますが、実際はもっとある為ネストの制限に引っかかりそうです。 なにより計算式が長くて修正するにも一苦労してしまいます。 ここまで来て行き詰ってしまいました。 既出でしたら申し訳ありません。知恵を貸して下さい。よろしくお願いします。

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

その他の回答 (2)

  • 回答No.3
  • CoalTar
  • ベストアンサー率40% (705/1742)

ISNUMBERとORを使うなら =IF(OR(ISNUMBER(C2),ISNUMBER(G2),ISNUMBER(K2)),SUM(B2:C2,F2:G2,J2:K2),"") という形にします。 文字列は演算できないので、SUM関数を使って対処します

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答、有難うございました。 教えていただいた式でバッチリ成功しました。 文字があっても前段のOR(ISNUMBER(C2),ISNUMBER(G2),ISNUMBER(K2))で文字は弾かれるようで、SUMを使わないでもエラーは出ませんでした。 ISNUMBERとORの組み合わせ方が良く理解できました。

  • 回答No.2
  • asuncion
  • ベストアンサー率32% (1743/5383)

=if(or(isnumber(C2),isnumber(G2),isnumber(K2)),B2+C2+F2+G2+J2+K2,"")

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答、有難うございました。 orの使い方を間違えていたようです。 教えていただいた式でバッチリ成功しました。 結果よりもorを上手く使えずに悩んでいたので、これで気分良く眠れます。

関連するQ&A

  • #260の補足です。四捨五入の方法教えて下さい。

    #5362 NO.#2にて、 IF(ISNUMBER(H2),IF(H2>1000,3000+6*700+6*(H2-1000),IF(H2>300,3000+7*(H2-300),"3000"))*65%,"")   の式を適用すれば、というご回答を頂きましたが、今度、この数式の結果の小数点以下を四捨五入させる必要が発生したため、 以下のように数式を変更しました。 =IF(ISNUMBER(H2),ROUND(IF(H2>1000,3000+6*700+6*(H2-1000),IF(H2>300,3000+7*(H2-300),"3000"))*65%,""),0) あるいは、 =ROUND(IF(ISNUMBER(H2),IF(H2>1000,3000+6*700+6*(H2-1000),IF(H2>300,3000+7*(H2-300),"3000"))*65%,""),0) すると四捨五入は出来るのですが、H2セルに数値を入れないと「#VALUE!」が再び出るようになりました。 どうすればいいでしょうか?

  • エクセルで"=AND(ISNUMBER(B2),ISNUMBER(C3),ISNUMBER(D4))"の簡略化?

    エクセル2000です。ワークシート関数での質問です。 特定の複数のセルのすべてに数値が入力されているかどうかの判定は、たとえば以下のような関数で調べられますね? =AND(ISNUMBER(B2),ISNUMBER(C3),ISNUMBER(D4)) このように少ないセルならこれでもいいのですが、多くなってくるといちいち、セルの数だけISNUMBER()を書いていくのが大変になります。 '=ISNUMBER(B2,C3,D4)←これでは当然エラーになりますが、こんな感じで簡単に判定するワークシート関数はないのでしょうか?

  • ExcelのISNUMBERについて

    (1)A2に数値が入った場合、A1には「1」 (2)A3に数値が入った場合は、A1には「2」 (3)A4に数値が入った場合は、A1には「3」 とするには、どうすればいいのでしょう? (1)の数式は =IF(ISNUMBER(A2),1,"") ですが、 その後の(2)(3)が続けてどう入力すればよいのか分からなくて、、、 教えていただけますでしょうか?

  • 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)),"購入","その他"))))) わかる方がいらっしゃいましたら、どうぞ教えて下さい。

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

    =IF(L2="","EDATE(J2,K2)","EDATE(L2,K2)") という数式で L2が空白の場合、J2の日付からK2の月分だけ経過した日付を表示。 空白でない場合、L2の日付からK2の月分だけ経過した日付を表示したいのですが、 セルには直接『EDATE(J2,K2)』という数式が表示されてしまいます。 空白にしたら『EDATE(J2,K2)』、日付を入れたら『EDATE(L2,K2)』になるので一応IF関数は生きてると思うのですが、中で計算をしてくれていません。 解決方法をぜひご教授くださいませんか。

  • セル内の文章から文字を抜出したいです

    セル内の文章から文字を抜出したいです。 文字の書き方は、本当にランダムな並び方をしています。 [例] A1セル あいうえお12345 ↓ B1セル ○○ A2セル かきくけこ456789 ↓ B2セル ■■ いま、下の関数式を入れていますが、5つしか文字を抜き出せません。 せめて倍の10個は抜出したいのですが、どうすればいいでしょうか? =IF(ISNUMBER(FIND("あいうえお",A2)),"OO",IF(ISNUMBER(FIND("さしすせそ",A2)),"■■",IF(ISNUMBER(FIND("かきくけこ",A2)),"□□",IF(ISNUMBER(FIND("たちつてと",A2)),"◇◇",IF(ISNUMBER(FIND("なにぬねの",A2)),"△△","その他"))))) よろしくお願いいたします。

  • エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです!

    エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです! いま=O48*($E$8/100)となっている算式を、 =IF(ISNUMBER(O48*($E$8/100)),O48*($E$8/100),"N/A") としたいのです。 また、このような変換を行うべきセルが数百個あり、これをボタンひとつもしくは Ctl+aなどで行えるようにしたいのです。 式の返還は単純で、最初の式をxとすると、IF(ISNUMBER(x),x,"N/A") と置き換えるだけなので、たとえばxという変数に今のセル内の式を代入し、それから IF~の式の指定場所にxを入れる・・・というようなプログラミング処理ができるのでは とかんがえ、質問しました。 よいアイデアをください!!明日までにやる必要があり困っています・・・

  • AVERAGE(IF

    EXCEL2003ですが、2行目にB列からK列までに数値が入っています。 その中で100以下の数値の平均をL2に表示させるべく、下記式をL2に貼り付けましたが、#VALUE!の表示です。 =AVERAGE(IF(B2:K2<101,B2:K2,"")) 下記式でも同様でした。 =AVERAGE(IF(B2:K2<101,B2:K2)) 加減乗除は分かるのですが、IF関数は良く分かりません。 どうぞ宜しくご教示下さい。

  • エクセルの条件付きの関数(IFなど)の使い方

    よろしくお願いします。 エクセルの表計算で、例えば、”おこづかい帳”のような、収入または支出を各行ごとに一番右の合計欄に自動で計算していく方法について質問します。 例として、3列2行の表で説明します。 A列は収入、B列は支出、C列は残高です。 一行目のA1、B1、C1は最初の一日目なのでC1セルだけに当初のお金500円が入力されています。二行目のB1またはB2の必ずどちらか1つだけに(収入か支出の)金額が入るとしてその時のB3の残高を自動で算出したいです。(実際の表は、それの繰り返しで何行も下に続いていきます。)B1に収入が200円あれば、B3は700円になり、B2に支出200円があれば、B3は300円になるような計算です。 次のような三つの条件になります。 (1)B1(収入)が空欄の時はB2(支出)の値を用いて、B3=A3-B2(2)B2(支出)が空欄の時はB1(収入)の値を用いて、B3=A3+B1 (3)B1、B2ともに空欄の時は、なにも計算しない(B3も空欄になる) そして、B3に入れる式としてこのような式を作りました。 =IF(OR(B1="",B1>0,B1B2=""),(B3=A3-B2,B3=A3+B1,B3="")) しかし、うまく計算されません。 どこを直せばよいでしょうか?またはIF以外の関数で必要なものがあるのでしょうか?

  • IsNumberについて

    Sub macro01() If WorksheetFunction.IsNumber(123) = ture Then MsgBox "数値です" End If End Sub WorksheetFunction.IsNumber(123)で、数値なら、MsgBox "数値です"って表示されると思ったのですが、 MsgBox "数値です"を通りません。 123を数値と認識してないのでしょうか?