Если ячейки начинаются с AND Создать случайное число - PullRequest
0 голосов
/ 02 мая 2018

Я хочу создать подпрограмму, которая определяет, начинается ли ячейка в 12-м столбце с 262015. Если она все-таки начинается с этого, она должна создать новое случайное 8-значное число, начинающееся с «18», а затем 6 случайно созданных уникальные цифры.

Мой код, похоже, не определяет, начинается ли ячейка с 262015, и мне не удалось найти помощь по созданию 8-значного числа с этими требованиями.

Надеюсь, вы можете мне помочь!

Sub Opgave8()

For i = 2 To 18288
    If Left(Worksheets("arab").Cells(i, 12), 6) = "262015" Then
        Worksheets("arab").Cells(i, 3) = "18" & studyid(6)
    End If
Next i

Function UniqueRandDigits(x As Long) As String
Dim i As Long
Dim n As Integer
Dim s As String
Do
n = Int(Rnd() * 10)
If InStr(s, n) = 0 Then
s = s & n
i = i + 1
End If
Loop Until i = x + 1

UniqueRandDigits = s
End Function

End Sub

Ответы [ 2 ]

0 голосов
/ 02 мая 2018
For i = 2 To 18288
    If Left(Worksheets("Base").Cells(i, 12), 6) = "262015" Then
        Worksheets("Base").Cells(i, 3) = "18" & Randdigits(6)
    End If
Next i

Function RandDigits(x As Long) As String
Dim i As Long
Dim s As String
For i = 1 To x
    s = s & Int(Rnd() * 10)
Next i
RandDigits = s
End Function

РЕДАКТИРОВАТЬ: вот один, где все цифры разные

Function UniqueRandDigits(x As Long) As String
Dim i As Long
Dim n As Integer
Dim s As String
Do
n = Int(Rnd() * 10)
If InStr(s, n) = 0 Then
s = s & n
i = i + 1
End If
Loop Until i = x + 1

UniqueRandDigits = s
End Function

РЕДАКТИРОВАТЬ2: И вот тот, который заставляет все числа быть разными

dim n as  string
dim ok as boolean
For i = 2 To 18288
    If Left(Worksheets("Base").Cells(i, 12), 6) = "262015" Then
        ok = false
        do
        n = UniqueRandDigits(6)
            If Application.WorksheetFunction.CountIf(Worksheets("Base").Range("L2:L18288"), n) = 0 Then
                Worksheets("Base").Cells(i, 3) = "18" & n
                ok = true
            end if
        loop until ok
    End If
Next i
0 голосов
/ 02 мая 2018

Используя функцию Left, вам нужно указать String, затем количество символов слева, а затем проверить, равно ли оно "262015".

Попробуйте код ниже:

For i = 2 To 18288
    If Left(Worksheets("Base").Cells(i, 12), 6) = "262015" Then
        Worksheets("Base").Cells(i, 3) = "XXX"
    End If
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...