1304993955 エクセル2003 関数について


添付図を確認下さい。

E列の数字をA列~B列から参照しC列の割合・D列の金額をF列・G列に反映させたいです。

①E列が200の場合、(A列)0~(B列)500の間なので割合5%と金額は-(0)を選択し反映
②E列が80,001の場合、(A列)80,001~(B列)100,000の間なので割合40%と金額は10,375を選択し反映
③A列~D列は現時点で固定の数字ですが今後変更になる可能性もあります(手入力)
④A列・B列ともに個別でそれぞれ入力ができ今後、A列・B列の数字が変更となっても対応できるようにしたいです
 (A列に0~500と入力すると面倒なのでそれぞれのセルに一つずつ数字を入力したい)


という感じです。
質問があればコメント欄にお願いします。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2011/05/10 11:19:16
  • 終了:2011/05/10 14:04:58

回答(3件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/05/10 11:30:12

関係が判らないという馬鹿げたコメントが続いたためにキャンセルせざるを得なかった前回質問への回答だと下記

http://q.hatena.ne.jp/images/question/1304990/1304990752.jpg

セル F G
1 =SUMPRODUCT(($B$1:$B$9<=A1)*($C$1:$C$9>A1)*($D$1:$D$9)) =SUMPRODUCT(($B$1:$B$9<=A1)*($C$1:$C$9>A1)*($E$1:$E$9))

今回のご質問では下記

セル F G
1 =SUMPRODUCT(($A$1:$A$9<=E1)*($B$1:$B$9>E1)*($C$1:$C$9)) =SUMPRODUCT(($A$1:$A$9<=E1)*($B$1:$B$9>E1)*($D$1:$D$9))

いずれも2行目以下にはコピーしていくだけですが注意点が2つあります

(1)絶対指定を行っているためA列からD列(旧B列からE列)の行が増減した場合には式を作り直す必要がある

(2)B列(旧C列)の最後の行は空白ではなく999,999といったように何らかの値を入れておく必要がある

 

(1)に関してはDSUM関数を用いる方法などがありますが条件を書いておくためのセルが別途必要になったりするので割愛しています

id:namaewa_5

A列とB列それぞれに数字が入っていますので$A$1:$A$9で指定されるとできません

2011/05/10 14:04:46
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692011/05/10 12:07:37

この表のように範囲が連続している場合はVLOOKUPの第4引数をTRUEにすればそのまま使えます。


E1の数式を

=VLOOKUP(E1,$A$1:$D$9,3)

F1の数式を

=VLOOKUP(E1,$A$1:$D$9,4)

第4引数は省略するとTRUEとなります。

http://allabout.co.jp/gm/gc/297725/4/

id:namaewa_5

この式で本当にできましたか?

私はできませんでしたが

2011/05/10 14:04:36
id:taknt No.3

きゃづみぃ回答回数13537ベストアンサー獲得回数11982011/05/10 12:36:21

F列

=INDIRECT("C" & (COUNTIF(A:A,"<="&E2))+1)

G列

=INDIRECT("D" & (COUNTIF(A:A,"<="&E2))+1)

最後に +1しているのは 最初に入っているA列の数字の行数 -1の値です。

なお B列は みてません。

B列が 必ず A列の続きになるようになっているならば B列は 不要だからです。

人間が 見た目 あると わかりやすいだけかなと思います。

なので

0-500

501-800

1001-1500

みたいな イレギュラーな感じでは 対応できません。

ま、900とかの値の時 どうするんだ?というのが 出てくるとは 思いますが・・・。

id:namaewa_5

この式で本当にできましたか?

私はできませんでしたが

2011/05/10 14:04:40
  • id:windofjuly
    うぃんど 2011/05/10 11:38:52
    500-2000などではなく501-2000といった具合に修正なさっておられるところを見逃していました
    新しい表のほうでは関数内の > を >= に置き換えてください
  • id:SALINGER
    できますよ。TRUEを指定するとA列で値を超えない最大値を取得しますから。
  • id:taknt
    できないのは 提示していない条件があるからです。

  • id:SALINGER
    それってAB列をマージしちゃってるとかなのか。
    余計なことを。
  • id:namaewa_5
    >できないのは 提示していない条件があるからです。

    どういった条件ですか?

    >それってAB列をマージしちゃってるとかなのか。
    ④A列・B列ともに個別でそれぞれ入力ができ今後、A列・B列の数字が変更となっても対応できるようにしたいです
    書いてますよね?個別って。
    読みもせに。
  • id:taknt
    F列

    =INDIRECT("C" & (COUNTIF(A:A,"<="&E2)))

    G列

    =INDIRECT("D" & (COUNTIF(A:A,"<="&E2)))

    これだと 何が 表示されますか?

    たとえば 1行目
  • id:SALINGER
    >④A列・B列ともに個別でそれぞれ入力ができ今後、A列・B列の数字が変更となっても対応できるようにしたいです
    >書いてますよね?個別って。
    図にはA列とB列の間に~が入ってますけど、これって個別に入ってるどっちに入ってるんだろう・・・。
    どちらにしろ説明不足ですね。図を作る労力だけご苦労さまでした。
  • id:taknt
    ちなみに A列とB列の間にある 「~」は どのセルにあるんでしょうか?
  • id:nobnob3
    錚々たるメンバーが回答しているんですね。
    >ちなみに A列とB列の間にある 「~」は どのセルにあるんでしょうか?
    これは大事なことだと思います。単なる書式設定で表示されているのか?とか。
  • id:alpinix
    >ちなみに A列とB列の間にある 「~」は どのセルにあるんでしょうか?
    横で見ててもそこ、すごい気になってました。
     
    あと、図ではD列とE列の間に空白列があるように見えるのだけど、データ上の列名称も "D" "E" で合ってるのかなあ?
  • id:sayo237sayo
    ご苦労さま
  • id:taknt
    創設なんて言葉 初めて知ったよ。

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

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

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

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