重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセル2013での条件式についてご教授ください。

添付画像のような計算式の中で、
青枠の範囲を指定して、上段に数値があれば上段の数値を、なければ下段の数値を使って計算をして、黄色いセルにその答えを出したいと思っています。

☆ ①×②×③
☆ ①×②×C
☆ ①×B×C
☆ A×②×③
☆ A×B×③
☆ A×B×C

全てのパターンをクリアできる計算式で、IF関数の羅列にならないような関数、方法があれば教えてください。
小数点以下を四捨五入できる関数のみでお願いします。

「エクセル 6パターンの条件をクリアできる」の質問画像

質問者からの補足コメント

  • 作成している計算書の書式上、別セルで計算させたり、別表を作って参照することができません。

    記述が抜けていてすみません。よろしくお願いします。

      補足日時:2017/06/01 08:22

A 回答 (8件)

ANo3です。



各回答にコメントをなさっていらっしゃいますが、いくつか補足を・・・

>ユーザー定義関数というものがあるのは知りませんでした。
>マクロを使えばできるのでしょうが、だれが見ても何をしているのかわかるように
>書式づくりをしていますのであまり気が進まず今に至ります。
ユーザ定義関数はマクロの一種です。
「だれが見ても何をしているのかわかるように」という意味から採用しないのは一理あると思います。
一方で、そういう意図であるなら、質問者様自身がが組み立てられないような関数を用いるのも避けた方がよいのではないでしょうか?

例えば、No2様がお答えのように順次計算する方式の方がわかり易さの点ではすぐれているはずと思います。
仮に、セル等を非表示にしていても、参照式を見れば参照先は明らかなので、難しい式を用いるよりもはるかにわかり易いでしょう。

>PRODUCT関数は小数点以下切り捨てだったと記憶していますので
PRODUCTは積を求める関数です。(SUM関数の積版みたいなもの)
切り捨てはROUNDDOWNで可能ですが、「少数以下」とは固定されていません。
任意の(指定)桁数での切り捨てが可能です。
No5様の回答にあるROUNDは、同様に、指定桁数で四捨五入する関数です。


エクセルにはヘルプやMSのサイトに(だけでなく他にもたくさん)豊富な解説がありますので、それらを活用なさることをおすすめします。
    • good
    • 0
この回答へのお礼

この質問を気にかけていただきありがとうございます。

>質問者様自身がが組み立てられないような関数を用いるのも避けた方がよいのではないでしょうか?
おっしゃる通りですね、考えすぎて少し迷走していたようです。

皆様に回答を頂いてから色々と考えていましたが、やはりその方法が一番良さそうですね。

PRODUCTの使い方は承知の上で端数の処理方法が切り捨てだったと記憶しておりました。
言葉足らずな点があり、質問内容とは少し違うところまで考えさせてしまったようで申し訳ありません。
ですが全て丁寧に解説してくださったおかげで、自分の知識の正誤を確認することができました。
本当にありがとうございました。

お礼日時:2017/06/01 19:04

6パターンの条件とありますが、


①×B×③
A×②×C
の二つのパターンはあり得ないのですか?
    • good
    • 0
この回答へのお礼

あり得ます!!
抜け落ちていましたすみません、、。
ご指摘ありがとうございます。

お礼日時:2017/06/01 18:45

A・B・Cとなっている下段の数値は必ずあるものなのですよね?


(すべてが空白セルにはならないということですよね?)
IF関数の羅列とは、どの程度まで許されるのでしょうか?

例えば、以下のような式ではダメなのでしょうか?
 =PRODUCT(IF(ISBLANK(①),A,①),IF(ISBLANK(②),B,②),IF(ISBLANK(③),C,③))
(セル指定ではなくパターンを対象に入れています)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

A,B,Cには必ず数値が入ります。
上段の①,②,③が数値が入るときと入らないときがあるので苦戦しています、、。

現段階では、IF関数を3つほど羅列したものがありますが、
計算式から、参照セルを解読することが非常にややこしく、時間がかかっています。
シート数も多く、エクセル自体も重たくなってきているので
どうにか改善できないかと思っています。

PRODUCT関数は小数点以下切り捨てだったと記憶していますので、
少し改良して組み立ててくださった式でテストしてみようと思います。

お礼日時:2017/06/01 13:26

こんにちは!



>IF関数の羅列にならないような関数・・・

ん~~~関数でやろうとすればどうしてもIF関数の羅列になると思います。

↓の画像でE2セルに
=ROUND(PRODUCT(IF(A2="",A3,A2),IF(B2="",B3,B2),IF(C2="",C3,C2)),0)

という数式を入れています。m(_ _)m
「エクセル 6パターンの条件をクリアできる」の回答画像5
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

関数式まで組み立ててくださって、大変勉強になります。
少し改良しつつ試してみようと思います。

指定した範囲内で優先的に使うセルを条件に合わせて判別し、計算できるような関数が
知らないだけで実はあるんじゃないかと思い、こちらで皆さんのお力をお借りしていますが
どうにも理想が高かったようです、、。
参考にさせていただきます、ありがとうございました。

お礼日時:2017/06/01 13:16

ユーザー定義関数を作って、使用すればいかがですか?


この方法が手っ取り早いですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ユーザー定義関数のことを全く知りませんでしたので、参考になりました。
調べて試してみようと思います。

お礼日時:2017/06/01 13:27

こんにちは



>計算書の書式上、別セルで計算させたり、別表を作って参照することができません。
う~~ん。そのような制約の状況が想像できませんね。
表示したくないなら、非表示のセルでもよいし、非表示のシートでもできると思います。

>セルの中で解決できる方法
>IF関数の羅列にならないような関数
・・と、場合分けをしたいけれど、IF関数は使用するなという条件自体が難しいので、ユーザ関数を作成してしまえば、場合分けでもなんでも、相当に複雑なことでも可能になります。
セルに記入する関数式は
 =USERFUNC(①:C)
みたいなもので済むはずです。


通常の関数のみでというのであれば、
◆①やAの片方にだけ数値が入っているという条件が成立するなら
 =MAX(①,A)*MAX(②,B)*MAX(③,C)

◆両方に数値がある可能性があり、Aより①を優先するなら、IF文の羅列で
 =IF(ISNUMBER(①),①,A)*IF(ISNUMBER(②),②,B)*IF(ISNUMBER(③),③,C)
IF関数でさえなければ良いというのであれば、
 =IFERROR(OR(①)*①,A)*IFERROR(OR(②)*②,B)*IFERROR(OR(③)*③,C)

>小数点以下を四捨五入できる関数のみで~~
他にもいろいろな条件が後で付け加えられそうな気がしますので、四捨五入等の加工はご随意に・・・


配列数式などを利用すると、もう少しいろいろとできるのかも知れませんが、詳しくないので省略です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

配布用の書式を作成していますので、エクセルに詳しくない人が使っても
目に見えている範囲で内容がわかるようにと試行錯誤しての質問でした。
セル・シートの非表示は盲点でしたが、隠してしまっては計算式の解読に時間がかかるので、
できるけれどもなるべく使用は避けたいところです。

ユーザー定義関数というものがあるのは知りませんでした。
こちらで調べてみて、記載してくださっている関数式と合わせて検討してみようと思います。

丁寧に一つずつ答えてくださってありがとうございました。

お礼日時:2017/06/01 13:09

No.1のお礼への返答です。



どのような仕様か自分には分かりませんが、
そのシートしか表示させたくないのであれば
他のシートは非表示にすることで解決しそうな気もしますがいかがでしょう。
必要ならばシートやブックを保護することで非表示状態を維持することも可能です。
    • good
    • 0
この回答へのお礼

引き続き回答していただき、ありがとうございます。

別シートで計算してシートを非表示にするならできそうです。
このシートのみで、数式からどの値を使って計算しているかが明確にわかるようなものが
理想的な形なのですが、理想が高いのでしょうか、、。
マクロを使えばできるのでしょうが、だれが見ても何をしているのかわかるように
書式づくりをしていますのであまり気が進まず今に至ります。

お礼日時:2017/06/01 10:43

自分ならどこか別のセルに6つの計算式を記述しておき、OFFSET関数でその計算結果を選択するようにする。


そして、四捨五入うんぬんは別のセルの計算式で行えばいい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

記述を忘れていましたので、補足していますが
作成している計算書の書式上、別セルで計算させたり、別表を作って参照することが難しいので
添付画像のセルの中で解決できる方法があれば助かります。
OFFSET関数の活用は他の機会に活かそうと思います、ありがとうございます。

お礼日時:2017/06/01 08:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!