エクセルの詳しい方へ

下記の構文はどういう計算式でしょうか?
わかりやすく教えて頂けますか?
ちなみに、栗田ファイル、瀬見ファイル、期間保証ファイルが存在します。

=IF(ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))),"",IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/15 11:20:58
  • 終了:2006/06/15 13:31:42

ベストアンサー

id:kumaimizuki No.5

くまいみずき回答回数614ベストアンサー獲得回数312006/06/15 11:56:32

ポイント100pt

http://q.hatena.ne.jp/list

では、順番に説明してみます。

まず

ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

を『条件』とします。

次に

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

を『結果』とします。

すると、質問の関数は

=IF(条件,"",結果)

となります。

つまり、条件の部分が"TRUE"なら空白、"FALSE"なら結果の値を表示します。

では、『条件』とは一体何か、『結果』とは一体何か。といったことに入っていきましょう。


ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

まず、ISERRORという関数は、セルの内容がエラー値(#N/Aや#VALUE!など)の場合には、"TRUE"を返し、それ以外なら"FALSE"を返します。

エラー値の判定は()内の部分、つまり

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

になります。

この条件式では何をしているか。というのを細かく見ていきます。


IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

まず、最初の部分では、そのシートのI4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。

もし、『栗田』と入っていない場合は、太字部分の処理になります。

太字部分のみを取り出しますと

IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))

となります。

ここで再びIF文により分かれます。

I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

もし、『アフィリ』と入っていない場合は、太字部分の処理になります。

IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))

同じように取り出しますと、今度はI4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

もし、『瀬見』と入っていない場合は、太字部分の処理になります。

最後に太字部分は、I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

それ以外は何も行いません。


条件式の部分をまとめますと、このようになります。

  • I4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。
  • I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • 上記以外の場合は、何も処理をしません。

ここでエラー値となりうるのは、例えばI4セルに『栗田』と入っているのに、V4セルには何も入力されていない(もしくは『0』になっている)場合などです。

つまり、数値が入るべき場所に何も入力されていなかったり、『0』が入力されていると『エラー値』が返ってきます。

そうすると、『ISERROR関数』では"TRUE"という結果になります。

逆に正しく入力されていれば、"FALSE"という結果になります。


ここで最初に『結果』と置き換えた部分について触れておきます。

実は、上記の

  • I4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。
  • I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • 上記以外の場合は、何も処理をしません。

と全く同じ処理を行います。

つまり、最初の条件式では「正しく計算されれば表示し、何かしらのエラー値になったら空白を表示する」という処理を行っているのです。

先ほど触れた通り、「I4セルに『栗田』と入っているのに、V4セルには何も入力されていない」といった場合、エラー値が表示されてしまうので、この条件式を入れることにより、空白に置き換える。といったことをしているのです。



なお、最後になりましたが、この条件式ではファイル関係の処理をしていません。

その他の回答(6件)

id:rikuzai No.1

りくっち回答回数1366ベストアンサー獲得回数1412006/06/15 11:30:18

セルI4の値が

「栗田」だったらD4/V4

「アフィリ」だったらD4/C4

「瀬見」だったらD4/C4

「期間保障」だったらD4/C4

それ以外の場合は文字列0(空白)を返します。


ただ、私だったらもう少し違う式を書くと思います。

http://www.moug.net/

id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/06/15 11:42:11

ISERROR

http://www.relief.jp/itnote/archives/000426.php

使用した関数でエラーが発生したかどうかを調べる関数です。

V4が 0の場合、0で割り算をすると エラーが発生します。

このエラーの時とそうでないときの処理を わけてやってるだけですね。

エラーをチェック

ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

で エラーだったら "" を セットする。

それで なかったら 以下とする。

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))


あとは、簡単なIF文です。

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

I4が 栗田なら D4/V4を計算

I4が アフィリなら D4/C4を計算

I4が 瀬見なら D4/C4を計算

I4が 期間保証なら D4/C4を計算

I4が 上記にならないとき FALSEを表示

ということを やってます。

id:DickY No.3

DickY回答回数10ベストアンサー獲得回数12006/06/15 11:38:17

I4のセルが、

 "栗田"なら D4の値÷V4の値 を表示

 "アフィリ"か"瀬見"なら D4の値÷C4の値 を表示

 ただし、割り算ができないとき(*)は、何も表示しない

となります

「割り算ができないとき」とは、「割り算で使うセルに数字が書かれていないとき」や「ゼロで割ることになるとき」のことです。

http://q.hatena.ne.jp/1150338057(ダミー)

id:ootatmt No.4

ootatmt回答回数1307ベストアンサー獲得回数652006/06/15 11:36:53

http://asugi23.web.infoseek.co.jp/excel/soft33.htm


I4 の内容が、

期間保障 なら D4/C4 の結果を表示

瀬見 なら D4/C4 の結果を表示

アフィリ なら D4/C4 の結果を表示

栗田 なら D4/V4 の結果を表示

上記のどれでもなければ、""(空白)を表示

となります。

id:kumaimizuki No.5

くまいみずき回答回数614ベストアンサー獲得回数312006/06/15 11:56:32ここでベストアンサー

ポイント100pt

http://q.hatena.ne.jp/list

では、順番に説明してみます。

まず

ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

を『条件』とします。

次に

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

を『結果』とします。

すると、質問の関数は

=IF(条件,"",結果)

となります。

つまり、条件の部分が"TRUE"なら空白、"FALSE"なら結果の値を表示します。

では、『条件』とは一体何か、『結果』とは一体何か。といったことに入っていきましょう。


ISERROR(IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))))

まず、ISERRORという関数は、セルの内容がエラー値(#N/Aや#VALUE!など)の場合には、"TRUE"を返し、それ以外なら"FALSE"を返します。

エラー値の判定は()内の部分、つまり

IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

になります。

この条件式では何をしているか。というのを細かく見ていきます。


IF(I4="栗田",D4/V4,IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))))

まず、最初の部分では、そのシートのI4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。

もし、『栗田』と入っていない場合は、太字部分の処理になります。

太字部分のみを取り出しますと

IF(I4="アフィリ",D4/C4,IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4)))

となります。

ここで再びIF文により分かれます。

I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

もし、『アフィリ』と入っていない場合は、太字部分の処理になります。

IF(I4="瀬見",D4/C4,IF(I4="期間保証",D4/C4))

同じように取り出しますと、今度はI4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

もし、『瀬見』と入っていない場合は、太字部分の処理になります。

最後に太字部分は、I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。

それ以外は何も行いません。


条件式の部分をまとめますと、このようになります。

  • I4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。
  • I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • 上記以外の場合は、何も処理をしません。

ここでエラー値となりうるのは、例えばI4セルに『栗田』と入っているのに、V4セルには何も入力されていない(もしくは『0』になっている)場合などです。

つまり、数値が入るべき場所に何も入力されていなかったり、『0』が入力されていると『エラー値』が返ってきます。

そうすると、『ISERROR関数』では"TRUE"という結果になります。

逆に正しく入力されていれば、"FALSE"という結果になります。


ここで最初に『結果』と置き換えた部分について触れておきます。

実は、上記の

  • I4セルに『栗田』と入っている場合、「D4セルの数値÷V4セルの数値」という計算を行います。
  • I4セルに『アフィリ』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『瀬見』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • I4セルに『期間保証』と入っている場合、「D4セルの数値÷C4セルの数値」という計算を行います。
  • 上記以外の場合は、何も処理をしません。

と全く同じ処理を行います。

つまり、最初の条件式では「正しく計算されれば表示し、何かしらのエラー値になったら空白を表示する」という処理を行っているのです。

先ほど触れた通り、「I4セルに『栗田』と入っているのに、V4セルには何も入力されていない」といった場合、エラー値が表示されてしまうので、この条件式を入れることにより、空白に置き換える。といったことをしているのです。



なお、最後になりましたが、この条件式ではファイル関係の処理をしていません。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 たか 104 84 12 2006-06-15 12:00:31
2 kubira711 132 112 0 2006-06-15 12:53:46
  • id:taknt
    I4の値が 一致しない場合 FALSEが 表示されるはずなんだけどなぁ・・・。
  • id:ootatmt
    「いるか」の回答、間違えてるやん。
  • id:kumaimizuki
    くまいみずき 2006/06/15 15:33:05
    ご指摘の通り、「上記以外の場合は、何も処理をしません。」という部分は、自動的に「FALSE」が返ります。
    そのため、何も処理はしませんが、表示としては「FALSE」と出てきます。
    (「FALSEを表示する」という処理をしているとも言えますが・・・)


    お詫びして訂正すると同時に、指摘してくださった方にお礼を申し上げます。
  • id:taknt
    あ、いえいえ。
    私だけ FALSEって表示されるのかなぁって 気になっただけです。

    みんな、そのことについては 特に 何も記載していなかったからですが。
  • id:ootatmt
    いいえ、FALSE は表示されません。
  • id:taknt
    ん? 表示されないの? 何か設定してある?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません