[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『合計によって繰り上げたり切り捨てたりしたい』(さ〜)
循環操作がわかりません。というのは合計があり、その合計に合せる為に合計する数字を調整したいのです。小数点以下四捨五入なのですが、合計によって繰り上げたり、切り捨てたりしたいのです。
想像ですが・・・ 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)
意味を取り違えているかも知れませんが、その際はご指摘下さい。
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.