[[20040219123315]] 『合計によって繰り上げたり切り捨てたりしたい』(さ〜) ページの最後に飛ぶ

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

 

『合計によって繰り上げたり切り捨てたりしたい』(さ〜)

循環操作がわかりません。というのは合計があり、その合計に合せる為に合計する数字を調整したいのです。小数点以下四捨五入なのですが、合計によって繰り上げたり、切り捨てたりしたいのです。


 想像ですが・・・
SUM関数で集計する要素のセルでSUM関数の結果を見て
IF関数で数値調整しようとされているのでは?
こんな感じで。
  A
1 =IF(A5=???,XXX,YYY)
2 10
3 12
4 53
5 =SUM(A1:A4)
(KAMIYA)

 配当計算では?間違っていたらごめんなさい。(アットホーム)
 配当金を各自の金額に応じて配当する場合、あまりがでたとき、各自の配当額を
 切り上げたり切り下げたり(余りの配分方法)をどうするかと言うことでしょうか。

 配当計算に近いです。というか、配当計算かな?(さ〜)
 @、1つのものを3つ(それぞれ異なる%)で割ります。その割ったものは四捨五入します。
 その計算がたくさんあります。

 A、その1つのものの合計(SUM)をだし、また、その合計を%で割ります。

 そうすると、@の%で割ったものの合計(SUM)と、Aの合計を%で割った数字が
 合いません。よって、@の%で割った答えを四捨五入ばかりではなく、 
 自動に調整したいのです。

 わかりますか?

 まだ、内容がよくわからないのですが、(アットホーム)
 どのような形式になっているのかわかれば、みんなのレスが付くと思いますが。

 私なら、
 @ 四捨五入ではなく、任意の最小単位(例:小数点以下)で切り捨てます。
 A 切り捨てた合計の数を、切り捨て額の多い順に任意の最小単位で配当します。

 といった手順になるのかなと想像します。


 A列1行に22という数字があります。(さ〜)
 B列(50%)、C列(30%)、D列(20%)があり、
 22という数字をそれぞれの%で割ります。
 そうすると22の行のB列に11、C列に7、D列に4。
 その合計は22になります。
 次にA列の2行に32という数字を入れます。
 同じようにB列16、C列10、D列6。
 その合計は32になります。
 次に列の合計でA列、22+32=54、B列11+16=27、C列7+10=17、D列4+6=10。
 その合計A列の54を割ります。
 B列27、C列16、D列11。
 そうするとA列の54を割った27、16、11とB・C・D列の足した数の27、17、10が
 あいません。
 それを合計の数に合わせる為に、C列の7か10のどちらかを切り捨てにしたのです。
 それを自動に割り振ることはできませんか?
 横も縦も合うように小数点以下の数字を自動調整する方法は?

	A	B	C	D
 1		50%	30%	20%
 2	22	11	7	4
 3	32	16	10	6
 4	54	27	16	11

 B2に =ROUND($A2*B$1,0) B2:D4にコピーしたのが、さ〜さんの説明とあうけど

 さ〜さんの質問の意は、C2+C3=16とシタイのかな〜
                       D2+D3=17 ?

 	A	 B	C	D
 1		 50%	30%	20%
 2	22	 11	7	4
 3	32	 16	10	6
 4	41	 21	12	8
 5
 6    SUM(A2:A4)   
 すみません。説明不足でした。
 A6はA2からA4までの合計です。B2:D4まではそれぞれA列の数字にBCD列の%を
 掛けた数字(四捨五入)です。
 条件としては
 @…SUM(B2:D2)=A2、SUM(B3:D3)=A3、SUM(B4:D4)=A4、SUM(B6:D6)=A6
 A…SUM(B2:B4)=B6、SUM(C2:C4)=C6、SUM(D2:D4)=D6、SUM(A2:A4)=A6
 A6は95になりますが、50、30、20%で掛けると
 B6=48、C6=29、D6=19になりますが、
 そうすると横、縦の合計も合わないですよね?
 それを自動(小数点以下)で調整する為の
 数式はありませんか?
 (さ〜)

 さ〜さん/サ〜さん 同一の方でしょ?
以前から気にはなっていたのですが、ちょっと忙しくてレス出来ませんでした。ペコリ。

 >B2:D4まではそれぞれA列の数字にBCD列の%を掛けた数字(四捨五入)です。
の式を、どの様に作っているのか 書き込んでいただけますか?
既出の『 B2に =ROUND($A2*B$1,0) 』と同じですか??? (sin)
 追記:範囲の数値を小数点第1位か2位まで表示させ、確認して下さい。


 	A	 B	C	D
 1		 50%	30%	20%
 2	22本	 11.0	6.6	4.4
 3	32本	 16.0	9.6	6.4
 4	41本	 20.5	12.3	8.2
 5
 6      95本  ROUND(A6*B1,0)=SUM(B2:B4)にC列もD列もなるようにする。
 
 A2の22本=Bの11+Cの6.6+Dの4.4とする。 
 BCDは本数なので、きちんと整数で表示したいです。
 
 すみません。急がせてしまって・・・(さ〜)

 >BCDは本数なので、きちんと整数で表示したいです。
に関しては、B2セルに =ROUND($A2*B$1,0)  とし、D4セルまでコピーすれば、
各セルの小数点第一位を四捨五入した整数を計算でき、A2,A3,A4,A6の値とは同じになります。
こういう事ではないのでしょうか?
それとも、B6:D6の ROUND(A6*B1,0) で求めた値に合う様に調整したいのでしょうか???
ん、
 >ROUND(A6*B1,0)=SUM(B2:B4)にC列もD列もなるようにする。
と言う事は、後者ですか?!  この場合、B2:D4の値を調整させる条件はどの様なものでしょうか?
私では、出来たとしても作業列を使った関数になりますが・・・
何を優先させて、どういう条件でどうしたいのか、今一度整理していただけますか
    首を傾げっぱなしの (sin) 


 優先させたいのは後者です。
 その結果によってB2:D4の値を調整させたいです。
 しかしその調整したものは合計するとA列の本数にならなくてはいけません。
 
 言いたい事がうまく言えなくてすみません。
 よろしくお願いします。(さ〜)

 意味を取り違えているかも知れませんが、その際はご指摘下さい。

 	A	B	C	 D                	 P        Q        R
 1		50%	30%	20%	→→→	50%	30%	20%
 2	22       11.00    6.60     4.40 	→→→    11        7       4
 3	32       16.00    9.60     6.40 	→→→    16       10       6
 4	41       20.50   12.30     8.20 	→→→    21       12       8
 5      -22      -11.00   -6.60    -4.40 	→→→   -11       -7      -4
 6	73							

 説明し易くしようと考えたら、作業列が長くなりすぎました。関数をネストしてゆけば、K列ぐらいで収まるかな???								
存在しないかも知れませんが、マイナス値(A5セル)の場合も合わせて考えました。								
B2:D5にはB2に↓を入力し、コピペして下さい。以下同様に該当範囲内にコピペして下さい。								
 =$A2*B$1								
E2:E5では、F〜H列各行の合計を出します。								
 =SUM(F2:H2)								
F2:H5は、B,C,D列各セルの小数点以下を切り捨てた整数を出します。								
 =TRUNC(B2)								
I2:I5は、A列とE列各行の差を出して、調整する値を求めます。
 =A2-E2
J2:L5では、B,C,D列各セルの小数点以下の値を出します。
 =B2-F2
M2:O5では、調整すべき値の優先順位をランク付けします。
 ※I列の値が、+の場合はJ〜L列の各行の中で大きい順に、-の場合は小さい順に、
  J〜Lの値が『 0 』の場合は、最下位とします。
 =IF($I2>=0,IF(J2<>0,RANK(J2,$J2:$L2,0),COUNT($J2:$L2)),IF(J2<>0,RANK(J2,$J2:$L2,1),COUNT($J2:$L2)))
P2:R5は、最終的に調整された値です。
 =IF($I2=0,F2,IF($I2>0,IF(SMALL($M$2:$O$2,ABS($I2))=M2,F2+1,F2),IF(SMALL($M$2:$O$2,ABS($I2))=M2,F2-1,F2)))

 B6:D6($A6*B$1)の結果も加味して考えるとなると、もう一工夫必要になりますが・・・
また、作業列を使わずにB2:E5に一発で求めたい場合は、マクロの神様の降臨をお待ち下さい。
個人的には、以前もっと複雑な条件を難なく(?)こなされた 弥太郎 様が、真っ先に浮かびましたが、
小数嫌いになっているかも知れません。でもご安心⇒ここには、大勢の神様がいらっしゃいます。  (sin)

 


コメント返信:

[ 一覧(最新更新順) ]


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