[[20091013143526]] 『関数』(PaPa) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数』(PaPa)
          H          J           K       U      V
       No1在庫    No2在庫   No3在庫     No    出荷量
[22]      10          10         10       1      5
[23]      5           10         10	
H列の式
 =H21+Y21-AI21+(AL21) 
 J列の式
 =J21+Z21-AJ21+(AM21)
 K列の式
 =K21+AA21-AK21+(AN21)
 が入っています。
 上記のサンプルデ−タ−のように
 U列のNoに(1)を入れたら
 V列の出荷量をひいてほしいのです。
 U列に1をいれたらV列をひいた式を
 H列に組み込みたい。
U列に2をいれたらV列をひいた式を J列に組み込みたい。 
U列に3をいれたらV列をひいた式を K列に組み込みたい。 
どのような関数を組めばよいのか教えてください。

で回答をいただいたのですが
その時の回答

H23セルに入る式
=H22+Y22-AI22+AL22-V22*(U22=1)

今回はAA〜AD列が増えまして

          H          J           K       U      V       AA              AB        AC        AD  
       No1在庫    No2在庫   No3在庫     No    出荷量        移送先No    No1移送量  No2移送量  No3移送量
[22]      10          10         10       1      5              1                         3
[23]      8           7         10	

以前教えていただいた式H23セル

=H22+Y22-AI22+AL22-V22*(U22=1)

プラス

上記の演算をさせたいのですが

AA〜ADは

     AA AB  AC AD  

       移送先No    No1移送量  No2移送量  No3移送量
          1             ×    ○     ○
          2             ○    ×     ○
          3             ○        ○          ×

    さらに  
          H          J           K       U      V       AA              AB        AC        AD  
       No1在庫    No2在庫   No3在庫     No    出荷量        移送先No    No1移送量  No2移送量  No3移送量
[22]      10          10         10       1      5              1                         3          1
[23]     9            7        9

よろしくお願いします。


 取り敢えず処理のイメージが分かりやすい様に
 >=H22+Y22-AI22+AL22-V22*(U22=1) 
 Y,AI,AL列が何のデータなのかも
 書いておかれるのがよいと思います。

 それから、○×の表と今回のご質問が
 どの様に絡んでくるのかよく分かりません。

 AA22が
 1だったらH23に      +AC22+AD22 する。     J23,K23には加算しない
 2だったらJ23に +AB22     +AD22 する。 H23,    K23には加算しない
 3だったらK23に +AB22+AC22      する。 H23,J23    には加算しない
 とか言うこと?

 (HANA)


 HANA様ありがとうございます。
 説明不足で申し訳ありません。
 >Y,AI,AL列が何のデータなのかも
 Y列は
 No1の生産量
 Z列は
 No2の生産量
 AA列は
 No3の生産量
 AI列は
 No1の使用量
 AJ列は
 No2の使用量
 AK列は
 No3の使用量
 です。

          H          J           K       U      V       AA              AB        AC        AD  
       No1在庫    No2在庫   No3在庫     No    出荷量        移送先No    No1移送量  No2移送量  No3移送量
[22]      10          10         10       1      5              1                         3          1
[23]     9            7        9

 AA22が
 >1だったらH23に +AC22+AD22 する。     J23,K23には加算しない
 >2だったらJ23に +AB22+AD22 する。   H23,K23には加算しない
 >3だったらK23に +AB22+AC22 する。   H23,J23には加算しない
 そうです。
 宜しくお願いします。

(PaPa)


 でしたら
 >=H22+Y22-AI22+AL22-V22*(U22=1) 
 こんな感じで         ~~~~~~~~~~~
 付け加えていけば良いと思いますが。

 ってことで、まずは前回の回答の意味を理解しましょう。

 H24に =U22=1 の式を入れます
 H25に  =V22*H24 の式を入れます。

 U22が「1」の 時 H24は TRUE になり H25は V22の値が表示されます。
   「1」でない時 H24は FALSEになり、H25は 0 に成ります。

 TRUE,FALSEを掛け算した場合、TRUE=1 FALSE=0 として扱われる為です。

 よく分からなければ、式は長く成りますが
 IF関数を使用されるのが良いと思います。
 前回の式ですと、こんな感じで。
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)

 どちらが分かりますか?

 (HANA)

 説明ありがとうございます。
 作ってみたのですが
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA=1,AC,0)+IF(AA=1,AD,0)
 エラ−になってしまいました。

(PaPa)


 修正

 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA=1,AC22,0)+IF(AA=1,AD22,0)

(PaPa)


 これでよいのでしょうか
 =H22+Y22-AI22+AL22-IF(U22=1,V22,IF(AA=1,AC22,IF(AA=1,AD22,0)))

(PaPa)


 >これでよいのでしょうか
 ・・・良くないですよね。

 AA=1 の「AA」って何ですか?

 また
 1の時は、AC22+AD22 をそれまでの式に足せば良いのですよね?

 感じとしては
 >作ってみたのですが
 や
 >修正
 として載せられた式の
 イメージで作れば良いと思います。

 (HANA)

 IFは難しいようで
 H23に入れる式
 =H22+Y22-AI22+AL22-V22*(U22=1)+AC22*(AA22=1)+AD22*(AA22=1)
 こちらでやることにしました。
 HANA様
 ありがとうございました。

(PaPa)


 ん?
 >1の時は、AC22+AD22 を
 ですから
 =H22+Y22-AI22+AL22-V22*(U22=1)+(AC22+AD22)*(AA22=1)
 とか                            ~~~~~~~~~足し算した物を足すか 0 か
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,0)
 とかです。                    AA22が1だったら~~~~~~~~~足し算した物を足す

 勿論別々にしても良いと思いますが。

 ちなみに、IF関数を使った物でも、ちゃんとセル番地にすれば
 エラーにならないと思います。
=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA=1,AC22,0)+IF(AA=1,AD22,0)
  ↓                                ~~セル番地に    ~~セル番地に
=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22,0)+IF(AA22=1,AD22,0)
                                      ~~~~              ~~~~

 (HANA)


 HANA様の助言を参考に
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22,0)+IF(AA22=1,AD22,0)
 作って載せたのですが
 ありゃ
 載ってない
 これじゃHANA様が
 >ん?
 となるわけです。

 IFにしても
 どちらも
 色々なやり方があるのですね。

 HANA様
 大変お勉強になりました。
 ありがとうございました。

(PaPa)


 忘れていました。
          H          J           K       U      V       AA              AB        AC        AD  
       No1在庫    No2在庫   No3在庫     No    出荷量        移送先No    No1移送量  No2移送量  No3移送量
[22]      10          10         10       1      5              1                         3          1
[23]      9            7        9

 AA22が
 1だったらH23に +AC22+AD22 する。     J23,K23には加算しなくJ23はAC22の入力した数値をJ22から引 いた数値及びK23はAD22の入力した数値をK22から引いた数値を表示
 2だったらJ23に +AB22+AD22 する。   H23,K23には加算しなくH23はAB22の入力した数値をH22から引いた数値及びK23はAD22の入力した数値をK22から引いた数値を表示
 3だったらK23に +AB22+AC22 する。   H23,J23には加算しなくH23はAB22の入力した数値をH22から引いた数値及びJ23はAC22の入力した数値をJ22から引いた数値を表示

 宜しくお願いします。

(PaPa)


 なんだかよく分かりませんが
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,-AB22)
  AA22が1の時「AC22+AD22」を足して  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  それ以外のとき「-AB22」を足す(=AB22の値を引く)
 とか言う事?

 (HANA)

 数字をトン数で表させてもらいます。

         H          J           K       U      V       AA              AB           AC               AD  
       No1在庫    No2在庫   No3在庫     No    出荷量        移送先No    No1在庫移送量  No2在庫移送量  No3在庫移送量
[22]      10          10         10       1      5              1                            3                  1
[23]      9            7        9

 個別に説明すると
 U22に「1(No1在庫をさす)」を入れ V22に「5t」を入れると
 No1在庫H23は
 H22(10t)からV22(5t)
 No1在庫から出荷量を引いた数値がH23です。(10t-5t=5t)

 更に
 AA22に「1(No1在庫をさす)」を入れ
 AC22に「3t(No2からNo1への移送量)」を入れると
 No1在庫H23は
 AC23の「3t」はN01在庫にプラスされ
 それと同時に
 AC22の「3t」はNo2在庫から移送しているから
 J23はJ22-AC22
 10t-3t=7tになります。

 そして同じように
 AA22に「1(No1在庫をさす)」が入っていますから
 AD22に「1t(No3からNo1への移送量)」を入れると
 No1在庫H23は
 AC23の「1t」はN01在庫にプラスされ
 それと同時に
 AD22の「3t」はNo3在庫から移送しているから
 K23はK22-AD22
 10t-1t=9tになります。

 U22=1,AA22=1を指定していますから
 H23はH22-V22+AC22+AD22+Y22-AI22+AL22
 J23はJ22-AC22
 K23はK22-AD22
 同時に3つの計算を行うわけです
 関数では
 無理ですかね。

(PaPa)


 H23
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,-AB22)+IF(AA22=2,AB22,0)+IF(AA22=3,AB22,0)
 こんな感じで作ってみたのですが
 演算してくれません。
 どうしてでしょうか?

(PaPa)


 質問の内容ばかりとらわれていて
 よく考えてみたところ
 H23
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,0)+IF(AA22=2,AB22,0)+IF(AA22=3,AB22,0)
 できました。
 HANA様
 色々
 ありがとうございました。

(PaPa)


 AA22が「1」だったら、+AC22+AD22
  「1」以外だったら、+AB22
 と言う事?

 AA22に「1,2,3」のいずれかしか入らない
 (0 or 未入力時は、AB22:AD22 も未入力)
 と言うのであれば
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,AB22)
 で良いと思いますが、そう言う事では無いのでしょうか?

 物が移動するのに、どこにもマイナスが無いのが
 ちょっとよく分からないですが。。。

 (HANA)

 間違えました。

 >AA22が「1」だったら、+AC22+AD22
 >「1」以外だったら、+AB22
 >と言う事?

 AA22が「1」だったら、+AC22+AD22
「1」以外だったら、-AB22
 でした。

 H23
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,0)-IF(AA22=2,AB22,0)-IF(AA22=3,AB22,0)
 おそれいります。

(PaPa)


 えっと
 >>なんだかよく分かりませんが
 >>=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,-AB22)
 とは違うってこと?

 >>AA22に「1,2,3」のいずれかしか入らない
 >>(0 or 未入力時は、AB22:AD22 も未入力)
 >>と言うのであれば
 この前提が成立しないのかな?

 あ、そうそう
 「個別に説明すると」
 って感じで説明して貰うと分かりやすいです。
 セル番地だけを追いかけながら式を作るより
 処理をイメージできてから作る方が
 作りやすいので。

 で、後イメージがよく分からないのが
 >>AA22に「1,2,3」のいずれかしか入らない
 >>(0 or 未入力時は、AB22:AD22 も未入力)
 の部分なんです。
 ここは、どうなのですか?

 (HANA)


 HANA様
 >「個別に説明すると」
 >って感じで説明して貰うと分かりやすいです。
 ありがとうございます。

 失礼しました。
 肝心な部分を説いていませんでした。
 >>>AA22に「1,2,3」のいずれかしか入らない
 >>>(0 or 未入力時は、AB22:AD22 も未入力)
 そうです。
 AA22に「1,2,3」のいずれかしか入らない限り
 AB22:AD22も数値が入りません。

 >>>=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,-AB22)
 HANA様の作った式でいけます。
 IF(AA22=1,AC22+AD22,-AB22)
 AA22が1だったらAC22+AD22
 AA22が1以外なら-AB22
 ですよね。

 >>>=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,-AB22)
 もし
 AA22に間違えて5を入れても-AB22の演算をしてしまいます。
 入力規則のリストを「1,2,3」と入れておけば問題ないかと

 この式なら
 AA22に間違えて5を入れても演算しません。
 H列でAA22の入力ミスを早く気が付くかもしれません。
 =H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,0)+IF(AA22=2,AB22,0)+IF(AA22=3,AB22,0)
 いまいちスッキリしません式です。

 入力規則のリストを使い
 HANA様の式を使わせていただきます。
 もう使っていますが(笑)

(PaPa)


 >もしAA22に間違えて5を入れても-AB22の演算をしてしまいます。
 そうですね、ですから前提条件が必要に成ってきます。

 1が入ったとき  AC22+AD22
 2or3が入った時 -AB22
 それ以外の時   0
 であれば、例えばIF関数を使うなら

 まず「2or3が入ったとき」の条件は
 OR関数を使って OR(AA22=2,AA22=3) の様に書けます。
 AA22が2 又は AA22が3 のどちらかが成立した時に TRUE と成ります。
 これが成立した時 -AB22 それ以外の時 0 と言うIF関数は
 IF(OR(AA22=2,AA22=3),-AB22,0)
 ですね。

 それから、例えば
 AA22=1の時 +AC22+AD22 それ以外の時 999 と言うIF関数は
 IF(AA22=1,AC22+AD22,999)
 です。

 このIF関数の「999」の所が実は「999」ではなく
 さらに条件が分かれて
 >2or3が入ったとき -AB22
 >それ以外の時  0
 ですから、先ほど作った式と入れ替えます。
 IF(AA22=1,AC22+AD22,IF(OR(AA22=2,AA22=3),-AB22,0))
 ココが先ほど作った式~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 IF(条件1 ,真の場合1,          偽の場合1          )

 これで、AA22の値が
 1 の時       AC22+AD22
 2or3の時     -AB22
 それ以外の時 0
 を返す関数が出来たことになります。

 (HANA)

 HANA様へ
 解りやすい説明
 そして
 解決まで
 お付き合い
 ありがとうございました。

=H22+Y22-AI22+AL22-IF(U22=1,V22,0)+IF(AA22=1,AC22+AD22,IF(OR(AA22=2,AA22=3),-AB22,0))

(PaPa)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.