[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『関数』(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.