- ベストアンサー
Excel 毎週金曜日に4か所の勤務場所をランダム
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じの解説でいいですか? Sub Sample() Dim sData, i '↓勤務場所の配列を作っています sData = Split("東京,愛知,京都,大阪", ",") '↓一ヶ月分なのでD列(4列目)から31日分(34列まで)ループを回します(これが列になります)。 For i = 4 To 34 ’←ANo.2では「35」となっていますが34で十分でした(^^; '↓その列の58行目のセルの文字列が「金」なら…… If Cells(58, i).Text = "金" Then '↓その列の55行目に勤務場所の配列からランダムに選んだ1つを表示 Cells(55, i) = sData(Int(Rnd() * 4)) End If Next i End Sub
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
じゃあ、VBAで Sub Sample() Dim sData, i sData = Split("東京,愛知,京都,大阪", ",") For i = 4 To 35 If Cells(58, i).Text = "金" Then Cells(55, i) = sData(Int(Rnd() * 4)) End If Next i End Sub 月が変わるたびに動かしてください。
補足
マクロの実行毎に行い他のセルの入力で変化する事はなくなりました。ありがとうございました。つきましてはづうづしいお願いですが解説を戴けると勉強になります。よろしくお願いします。
- mt2008
- ベストアンサー率52% (885/1701)
曜日が文字列で「金」と入っているなら =IF(D58="金",INDEX({"東京","愛知","京都","大阪"},INT(RAND()*4+1)),"") 曜日は日付のシリアル値を書式で曜日表示にしているなら =IF(WEEKDAY(D58)=6,INDEX({"東京","愛知","京都","大阪"},INT(RAND()*4+1)),"") ↑これをD55セルに入れて右にコピー
補足
早速回答ありがとうございます。確認したところどちらでも成功しました。ただ、他のセルに何か入力するたびにセルの内容が変化します。1回確定するとそのまま固定する対処方法はないでしょうか。よろしくお願いします。
お礼
ご丁寧に解説戴きましてありがとうございました。今後もよろしくお願いします。