VBA заполняют ячейки случайным образом на 0 и 1 - PullRequest
0 голосов
/ 05 марта 2019

Так что я должен сделать VBA, где я должен рандомизировать 0 и 1.Я сделал очень простую версию, которая заполняет ячейки только 1с

Sub numberchangenormal()

Dim targetrange As Range
    Dim Cell As Range

Set targetrange = Range("A1:D1")

For Each Cell In targetrange
 Cell.Value = Int(1)
Next Cell


Set targetrange = Range("F1:I1")

For Each Cell In targetrange
 Cell.Value = Int(1)
Next Cell

End Sub

В первых четырех строках (A1: D1) мне нужна только одна 1 (остальные 0) Пример:

|0 |0 |1 |0 |

Во вторых четырех строках (F1: I1) мне нужно как минимум одну 1 (остальные - 0 или 1) Пример:

|1 |0 |1 |1 |

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Все ячейки могут быть назначены одновременно:

Sub numberchangenormal()
    [a1:d1,f1:i1] = "=RANDBETWEEN(0,1)"     ' set Excel formula to all of the cells
    [a1:d1] = [a1:d1].Value                 ' optional to convert the formulas to values
    [f1:i1] = [f1:i1].Value
End Sub
0 голосов
/ 05 марта 2019

Если вам нужен только один 1 в A: D, найдите случайное число и заполните его.

redim arr(1 to 4) as long

arr(application.randbetween(1, 4)) = 1

range("A1:D1") = arr

Если должен быть хотя бы один 1, но может быть более чем рандомизирован и проверять, является ли хотя бы один элемент массива 1 .Если нет, используйте метод выше, чтобы обеспечить хотя бы один 1 .

redim arr(1 to 4) as long

arr(1) = application.randbetween(0, 1)
arr(2) = application.randbetween(0, 1)
arr(3) = application.randbetween(0, 1)
arr(4) = application.randbetween(0, 1)

if (arr(1) + arr(2) + arr(3) + arr(4)) = 0 then
    arr(application.randbetween(1, 4)) = 1
end if

range("F1:I1") = arr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...