advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1215 for (Mook) (0.001 sec.)
[[20150501144750]]
#score: 9211
@digest: 1db9db849f3ebc6817d215066bd0ab65
@id: 67909
@mdate: 2015-05-02T01:47:19Z
@size: 3391
@type: text/plain
#keywords: branchname (50119), objslprelim (43608), objslfinal (36340), 当選 (15727), 選本 (15241), 選di (15241), objdic (11759), 名購 (7462), 入額 (7250), 備抽 (7055), 抽選 (6226), 列営 (6058), 合ne (5518), 所コ (5296), ド氏 (5131), getbyindex (4851), 業所 (4313), 選者 (4252), 答待 (3438), sortedlist (3394), 数苦 (3237), 本数 (2877), 購入 (2728), 営業 (2631), collections (2529), 可否 (1891), 予備 (1810), ロ案 (1601), 加味 (1446), エキ (1324), 1000 (1141), 解答 (1131)
『エクセルで抽選作業をしたい』(Ariel)
営業所の社員全40,000名から、商品を5,000円以上購入した2,500名の当選者を決めたいです。 営業所は1,500箇所あります。 営業所に1人は、必ず当選させたいです。 A列 B列 C列 営業所コード 氏名 購入額 ご教授いただけますでしょうか ※書き方を間違えたため、再度書き直しました。 < 使用 Excel:Excel2010、使用 OS:WindowsXP > ---- 当選本数がわからんと答えられないんじゃない? 全員が購入額上回ったら、60%の人が当選する計算になるし そもそも営業所に必ず一人ってランダムじゃないじゃあん (稲葉) 2015/05/01(金) 15:12 ---- D1を「一定額」 E1を「当選本数」として D2=IF(C2>$D$1,IF(COUNTIFS(A:A,A2,C:C,">" & $D$1)=1,ROW(A1),RANDBETWEEN(100,E$1*100)+ROW()*0.01),"") E2=IF(ROW(A1)<=$E$1,INDEX($B$2:$B$17,MATCH(SMALL($D$2:$D$17,ROW(A1)),$D$2:$D$17,0)),"") でどうだろう!? 関数苦手だから、エキスパートさんの解答待ったほうがいいとは思いますが・・・ __[A]________[B]_____[C]____[D]____[E] 営業所コード 氏名 購入額 500 10 aaa あ 1000 313.02 う aaa い 1000 659.03 こ bbb う 1000 3 さ bbb え 500 そ ccc お 500 あ ccc か 500 す ddd き 1000 843.08 し ddd く 1000 704.09 い eee け 1000 916.1 た eee こ 1000 188.11 く fff さ 1000 226.12 fff し 1000 541.13 ggg す 1000 504.14 ggg せ 1000 902.15 hhh そ 1000 251.16 hhh た 1000 701.17 (稲葉) 2015/05/01(金) 15:38 ---- こっちの解答に返事もしねーで、あげてばっかいるんじゃねえ! (稲葉) 2015/05/01(金) 18:10 ---- コメントへの回答は質問文を修正するだけでなく、コメントでも回答した方が良いか と思います。いらぬ誤解を招くことにもなりますので。 マクロの使用の可否はわかりませんが、マクロ案です。 Sub Sample() Columns("D").ClearContents Dim tbl tbl = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 4) Dim objSLPrelim Set objSLPrelim = CreateObject("System.Collections.SortedList") '// 予備抽選 Dim r As Long For r = 2 To UBound(tbl) If tbl(r, 3) >= 5000 Then objSLPrelim.Add Rnd(), r '// If tbl(r, 3) >= 5000 Then objSLPrelim.Add (10 ^ 4 * Rnd()) / tbl(r, 3), r '// 購入金額を加味した場合 Next Dim objSLFinal Set objSLFinal = CreateObject("System.Collections.SortedList") Dim objDic Set objDic = CreateObject("Scripting.Dictionary") '// 本抽選 Dim c As Long Dim branchName As String For c = 0 To objSLPrelim.Count - 1 r = objSLPrelim.GetByIndex(c) branchName = tbl(r, 1) If objDic.Exists(branchName) Then objDic(branchName) = objDic(branchName) + 1 Else objDic(branchName) = 1 End If objSLFinal.Add objDic(branchName) * 10 ^ 4 + Rnd(), r Next '// 結果出力 For c = 0 To objSLFinal.Count - 1 If c = 2500 Then Exit For '// 当選人数 r = objSLFinal.GetByIndex(c) tbl(r, 4) = "当選" Next Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, 4) = tbl End Sub (Mook) 2015/05/02(土) 10:47 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201505/20150501144750.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97017 documents and 608144 words.

訪問者:カウンタValid HTML 4.01 Transitional