こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

お世話になります。

仕事で各商品の単価を比較するためのリスト作成を頼まれたのですが、条件が複雑なため、
関数で悩んでいます。画像を参考に、順を追って説明させて下さい。

1.まずリストに、各商品の単価を入力

2.入力された単価は作業列(1)~(3)に反映されます。このセルに入っている計算式は、
  セルG6 =IF(C6="","",C6)
  セルH6 =IF(D6="","",D6)
  セルI6  =IF(E6="","",E6)
  が入っています。

3.ここからが分からないところなのですが、採用単価に入る式で迷っています。条件は、
 (1)A資料があれば、A資料が優先的に採用単価になる
 (2)B資料とC資料の2つがあれば、平均の値(1円未満切捨て)が採用単価になる
 (3)空白の欄には何も入れない
 とのことです。

試しに(セルJ6の場合) =ROUNDDOWN(IF(G6="",AVERAGE(H6:I6),G6),0) 
を入れてみましたら、(1)と(2)の条件はクリアしたように見えますが、空欄のある所はエラーの
#DIV/0!が出てしまいました。
式自体が違うのか、それとも式に何か追加するのか分かりません。

分かりにくい説明かと思いますが、どうぞお知恵をお貸し下さい。宜しくお願いします。
      

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2014-01-31 23:26:10

QNo.8455823

困ってます

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

>式自体が違うのか、それとも式に何か追加するのか分かりません。
G列~I列の値が全て空欄("")のときにエラーになりますので、それを回避する処理を行えばよいでしょう。
Excel 2007以降のバージョンではIFERROR関数は使えますので、それが最も簡単です。

=IFERROR(ROUNDDOWN(IF(G6="",AVERAGE(H6:I6),G6),0),"")

Excel 2003以前用には次の式が良いと思います。

=IF(COUNT(G6:I6)=0,"",ROUNDDOWN(IF(G6="",AVERAGE(H6:I6),G6),0))

式の各関数でどの関数がエラーになっているか分かり難いケースです。

投稿日時 - 2014-02-01 10:36:18

お礼

分かりやすい計算式でとても助かりました。こちらを使わせて頂き、本日の業務で無事にリストが作成できました。ありがとうございました。

投稿日時 - 2014-02-03 22:37:52

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

 まず無い事とは思いますが、万が一、A資料の所に金額ではなく、何らかの文字列(例えば「-」や空白スペース等)が入力されていた場合には、A資料の値を表示するのではなく、B資料とC資料の平均の値(1円未満切捨て)を表示させる様にするために、次の様な関数とした方が無難かも知れません。

=IF(ISNUMBER($C6),$C6,IF(COUNT($D6:$E6),ROUNDDOWN(AVERAGE($D6:$E6),0),""))

投稿日時 - 2014-02-01 02:02:11

お礼

ご回答ありがとうございます。助かりました。

投稿日時 - 2014-02-03 22:36:25

ANo.3

画像がよく見えず、間違ってたら申し訳ないのですが、

=IF(G6<>"",G6,IF(AND(H6<>"",I6<>""),ROUNDDOWN(AVERAGE(H6:I6),0),""))

'B資料とC資料の二つがあれば'→'資料B,Cのどちらか片方でも欠けたらNG'
と解釈しました。

A資料がなく、かつ、B資料とC資料のうちどちらか一方、またはその両方がない場合には空欄、という式になっています。

投稿日時 - 2014-02-01 01:29:59

補足

ご回答ありがとうございます。
説明が不足しておりましたが、(2)B資料とC資料の2つがあれば~ですが、場合によってはB資料だけ、C資料だけという時があります。その時は入力されている方が採用単価となります。(例:A資料がなく、B資料だけ入力されている→B資料が採用単価)

投稿日時 - 2014-02-01 10:12:39

お礼

無事にリストが作れました。ありがとうございました。

投稿日時 - 2014-02-03 22:35:35

ANo.2

=IF(C6<>"",C6,IF(COUNT(D6:E6),ROUNDDOWN(AVERAGE(D6:E6),0),""))
でいいです。

G,H,I列は使いませんが、作らなきゃいけないなら勿論あなたの式で置いておいてかまいません。

投稿日時 - 2014-02-01 00:02:53

お礼

ご回答ありがとうございます。助かりました。

投稿日時 - 2014-02-03 22:34:41

ANo.1

2.の式3つともIFである必要は無さそう。
単に代入しても同じ値っぽい。

3.
> =ROUNDDOWN(IF(G6="",AVERAGE(H6:I6),G6),0)
=IF(G6=””, ROUNDDOWN(AVERAGE(H6:I6), 0), G6)
では?

どこか一つのセルだけなら良いが、単価の3セル(2.の3つ)が固定なら
コピーする前に$G$6とかのように$を付けることが必要かも。

投稿日時 - 2014-01-31 23:50:29

お礼

ご回答ありがとうございます。助かりました。

投稿日時 - 2014-02-03 22:33:59

あなたにオススメの質問