Как сделать, если ... И оператор работает в Excel, чтобы увидеть, равна ли переменная любому из набора чисел - PullRequest
0 голосов
/ 02 января 2019

Я делаю таблицу рулетки в Excel для проекта. У меня есть переменная случайного числа с именем RandomNumber, которая генерирует и хранит случайное значение от 0 до 36 в ячейке, которая работает. Но когда я пишу оператор if, чтобы проверить, равно ли RandomNumber одному из чисел, которое сделало бы эту ставку выигрышной, она не работает. Как и в приведенном ниже коде, он всегда возвращает успешно, когда он должен быть ложным, так как кажется, что он просто видит все числа между всеми "или".

Извините за плохой английский, спасибо за любой ввод

Я попробовал несколько совпадений и диапазонов на листе, чтобы заставить его работать.

Sub Column_bet_1st()

 Dim PlayerBet As Range, Balance As Range, Bet_input As Range, RandomNumber As Integer

    Set PlayerBet = Range("O21")

    Set Balance = Range("L18")

    Set Bet_input = Range("O18")

    RandomNumber = Int((36 - 0 + 1) * Rnd + 0)

If Bet_input = "Column 1" And RandomNumber = 3 Or 6 Or 9 Or 12 Or 15 Or 18 Or 21 Or 24 Or 27 Or 30 Or 33 Or 36 Then Balance = Balance + PlayerBet * 2 Else
Balance = Balance - PlayerBet

End Sub

Ожидаемые результаты состоят в том, что оператор if будет искать только те числа, как показано в коде, и возвращает false, если RandomNumber не равен ни одному из них.

Ответы [ 3 ]

0 голосов
/ 02 января 2019

@ Магнус Хенден Не могли бы вы попробовать приведенный ниже код и оставить отзыв?

Option Explicit
Sub Column_bet_1st()

 Dim PlayerBet As Range, Balance As Range, Bet_input As Range, RandomNumber As Long

    'Refe to specific worksheet
    With ThisWorkbook.Worksheets("Sheet1")

        Set PlayerBet = .Range("O21")

        Set Balance = .Range("L18")

        Set Bet_input = .Range("O18")

        RandomNumber = Int((36 - 0 + 1) * Rnd + 0)

        If Bet_input = "Column 1" And (RandomNumber = 3 Or _
                                        RandomNumber = 6 Or _
                                        RandomNumber = 9 Or _
                                        RandomNumber = 12 Or _
                                        RandomNumber = 15 Or _
                                        RandomNumber = 18 Or _
                                        RandomNumber = 21 Or _
                                        RandomNumber = 24 Or _
                                        RandomNumber = 27 Or _
                                        RandomNumber = 30 Or _
                                        RandomNumber = 33 Or _
                                        RandomNumber = 36) Then
            Balance = Balance + PlayerBet * 2
        Else
            Balance = Balance - PlayerBet
        End If

    End With
End Sub
0 голосов
/ 02 января 2019

Три способа, которыми я могу думать об этом:

Ваш исправленный исходный код:

If Bet_input = "Column 1" And (RandomNumber = 3 Or RandomNumber = 6 Or _
                               RandomNumber = 9 Or RandomNumber = 12 Or _
                               RandomNumber = 15 Or RandomNumber = 18 Or _
                               RandomNumber = 21 Or RandomNumber = 24 Or _
                               RandomNumber = 27 Or RandomNumber = 30 Or _
                               RandomNumber = 33 Or RandomNumber = 36) Then
    Balance = Balance + PlayerBet * 2
Else
    Balance = Balance - PlayerBet
End If

Или, так как RandomNumber должен быть кратным 3, чтобы выиграть:

If Bet_input = "Column 1" And RandomNumber <= 36 Then
    If RandomNumber Mod 3 = 0 Then
        Balance = Balance + PlayerBet * 2
    Else
        Balance = Balance - PlayerBet
    End If
End If  

Или используя оператор Select...Case:

If Bet_input = "Column 1" Then
    Select Case RandomNumber
        Case 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36
            Balance = Balance + PlayerBet * 2
        Case Else
            Balance = Balance - PlayerBet
    End Select
End If
0 голосов
/ 02 января 2019

Вам нужно написать

RandomNumber = 3 Or 6 Or 9 ...

как

RandomNumber = 3 or RandomNumber = 6 Or RandomNumber = 9 ...

Еще лучше, используйте RandomNumber Mod 3 = 0 (явно проверяйте, не является ли RandonNumber не 0, если это действительно вероятность, которую вы не хотите). Соединив это вместе, вы получите

If Bet_input = "Column 1" And RandomNumber Mod 3 = 0 Then
    Balance = Balance + PlayerBet * 2
Else
    Balance = Balance - PlayerBet
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...