- ベストアンサー
エクセルで、100%を振り分けたい
エクセルで、こんな機能は、ないでしょうか。 例えば、『60』という数値を100%として、 これを、複数のセルに、ランダムなパーセンテージを表示させることはできないでしょうか。 例えば3つのセルに振り分けるとすると、 10 20 30 という感じです。 うまく表現できなくて。。 質問の仕方から悩んでいるのですが、妙案がありましたら、助けて下さい。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2において、四捨五入のround() の使い方間違って書きました C2 = round(B2 / $B$1 * $A$1,0) で、参考画像になります。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
振り分けるといってもRAND関数に加えてROUND関数などを使用しても必ずしも振り分けの結果を合計した数値が元の数値と一致するとは限りません。 作業列を使って対応するのがよいでしょう。 なお、振り分けをする数値が整数の場合に限らずに小数点を含む数値でも振り分けができるようにするために多少式が複雑になっています。 A1セルには振り分けをする数値、例えば60を入力します。 A2セルには幾つに振り分けをする下の数値を入力します。例えば3つに振り分けにするのなら3と入力します。 作業列として例えばC1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(COUNT(A$1:A$2)=2,ROW(A1)<=A$2),RAND(),"") D1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(C1="","",ROUND(A$1*(INDEX(C:C,ROW(A1))/SUM(INDEX(C:C,1):INDEX(C:C,A$2))),IF(ISERROR(FIND(".",A$1)),0,LEN(A$1)-FIND(".",A$1)))) A4セルから下方に分割された数値を表示させるのでしたらA4セルに次の式を入力して下方にオートフィルドラッグコピーします。 =IF(ROW(A1)<A$2,D1,IF(ROW(A1)=A$2,A$1-SUM(D$1:INDEX(D:D,A$2-1)),"")) これで整数は勿論小数点を含む数値までも望みの数で振り分けをすることができます。 F9キーを押すことで振り分けされた数値が変化します。 なお、作業列のC列やD列が目障りでしたらそれらの列を選択した上で右クリックし、非表示を選択すればよいでしょう。
- asciiz
- ベストアンサー率70% (6809/9681)
A1 60 (全体の数) B1 =sum(B2:B10) 以下乱数値の合計値 B2~B10 =rand() C1 =sum(C2:C10) 以下の合計値(検算) C2 = B2 / $B$1 * $A$1 C3以下、C2をコピーして作成 これで、C2~C10の合計が60になる、乱数値が入ります。 ただし…小数点ですが。 C2 = round(B2 / $B$1 * $A$1) (C3以下も同様) として四捨五入すれば、整数値となってで合計だいたい60になりますが、丸めることにより誤差が出てしまいます。 (F9で何度も更新すると、たった9個でも合計値が59~61ぐらいとぶれてしまうのがわかります) (参考画像。)
- neKo_deux
- ベストアンサー率44% (5541/12319)
RAND()関数で0~1のランダムな数を取得できますから、その割合に応じて振り分けとか。 A1に60が入ってるとして、 B1=RAND() B2=RAND() B3=RAND() C1=INT(B1/SUM(B$1:B$3)*A$1) C2=INT(B1/SUM(B$1:B$3)*A$1) C3=A$1-SUM(C$1:C$2) とか。 ゼロ割りする状況にはならないと思いますが。