[[20180507124703]] 『数値の均等配置』(アキ) ページの最後に飛ぶ

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

 

『数値の均等配置』(アキ)

1が1回、2が3回、3が2回という風に1から40までの数値で回数の違う数値を合計120個の中に均等配置する方法を教えてください

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 この場合の均等配置とはどういう配置を指すのか?
(ねむねむ) 2018/05/07(月) 13:17

Sub main()
    'Sheet1のA列に数値、B列に回数、結果はSheet2のA列に表示される
    Dim c As Range
    Sheets("Sheet2").Cells.Clear
    For Each c In Sheets("Sheet1").Range("A:A").SpecialCells(2)
        Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(c.Offset(, 1).Value) = c.Value
    Next c
    For Each c In Sheets("Sheet2").Range("A:A").SpecialCells(2)
        c.Offset(, 1).Value = WorksheetFunction.CountIf(Sheets("Sheet2").Range("A1:A" & c.Row), c.Value) / WorksheetFunction.CountIf(Sheets("Sheet2").Range("A:A"), c.Value)
    Next c
    With Sheets("Sheet2").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("B2:B" & Rows.Count), Order:=xlAscending
        .SetRange Range("A2:B" & Rows.Count)
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Sheets("Sheet2").Columns(2).Clear
End Sub
(mm) 2018/05/07(月) 14:08

解りにくい説明で申し訳ありません、
ルーレットのように1周120個の枠に等間隔で配置する方法が知りたかったのです

(アキ) 2018/05/08(火) 10:48


横から失礼します。
「等間隔に配置」だと、それぞれの数字が同じ数だけないとだめでしょうし、極端なことを言えば1〜40を3回繰り返せばいいってことになっちゃいませんか?

そうじゃなくて、1〜40までの数字がそれぞれ何個かある合計120個のグループから、120枠に重複なしでランダムに抽出配置したいってことだとおもうんですが、違ってますでしょうか。

推測があってる場合、
http://office-qa.com/Excel/ex205.htm
↑の方法で1〜120の乱数を作ることができるとおもうので、これを応用して、適当な列(または行)に「1,2,2,2,3,3,・・・」とリストを作っておいてからINDEX関数などで一つずつ参照させてみてはどうでしょうか

【例】
A1〜A120にリストを入力したとして
B1〜B120に「=RAND()」
C1に「=RANK(B1,$B$1:$B$120,0)」と入力して、120行目までフィル

上記の準備したうえで、
E1に「=INDEX($A$1:$A$120,MATCH(ROW(),$C$1:$C$120,0),1)」と入力して120行目までフィル

(もこな2) 2018/05/08(火) 15:40


ありがとうございます。
ランダム配置を試してみます
(アキ) 2018/05/09(水) 18:45

コメント返信:

[ 一覧(最新更新順) ]


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