現在、英語の単語とその意味をトルコ語で格納しているExcelファイルを作成しています。私がしているのは、Excelが単語をランダムに選択して表示して、「OK」をクリックすると、その単語の意味が表示されます。これは正常に動作します。問題はExcelに587語ありますが、同じ単語を尋ね続けるような気がします。
あなたはそれが私の誤解であると思いますか、Excelは非常に良い乱数を生成できません。私はそれをより良くするために何をすることができますか?Excelでの乱数生成
ここに私のコードです。
Sub askRandom()
Dim maxRow As Integer
Dim randNum As Integer
Dim answer As Integer
Dim known As Integer
Dim unknown As Integer
Dim sht As Worksheet
Dim resultSheet As Worksheet
Set sht = ThisWorkbook.Sheets("Words")
Set resultSheet = ThisWorkbook.Sheets("Results")
maxRow = sht.Range("A10000").End(3).Row
Do While answer <> vbCancel
randNum = Int(maxRow * Rnd() + 1)
MsgBox sht.Cells(randNum, 1).Value, , "Word is"
answer = MsgBox(sht.Cells(randNum, 2).Value & ", " & sht.Cells(randNum, 3).Value & _
", " & sht.Cells(randNum, 4).Value & sht.Cells(randNum, 5).Value, vbYesNoCancel, _
"Meanings are")
If answer = vbYes Then
known = known + 1
If sht.Cells(randNum, 6).Value <> 0 Then
sht.Cells(randNum, 6).Value = sht.Cells(randNum, 6).Value - 1
End If
ElseIf answer = vbNo Then
unknown = unknown + 1
sht.Cells(randNum, 6).Value = sht.Cells(randNum, 6).Value + 1
End If
Loop
MsgBox "Your results are " & known & " out of " & unknown + known
With resultSheet
.Cells(.Range("A10000").End(3).Row + 1, 1).Value = known
.Cells(.Range("B10000").End(3).Row + 1, 2).Value = unknown
.Cells(.Range("C10000").End(3).Row + 1, 3).Value = Format((known/(known + unknown)) * 100, "%##.0")
.Cells(.Range("D10000").End(3).Row + 1, 4).Value = Now
End With
End Sub
私は乱数生成をうまくできないと思っていましたが、単語の順序をシャッフルできます。それをしてもいいですか?私は革新的なソリューションを提供しています。
whileループでwhileループを使用する必要がありますか? –
@alisrn私はそれをループに入れます。ありがとう。 –
@Egan Wolf –