VBA根据其他单元格通过随机数填充单元格

时间:2014-12-18 17:22:24

标签: excel vba excel-vba fill

我正在使用Excel 2013,我需要通过随机数填充单元格范围。确切地说,范围(B1:B4)按数字填充以便在前一列中的单元格值,我的意思是在范围(A1:A4)中。如果有这种情况,我真的不知道如何使用VBA来填充它,否则它很简单。

这是一小部分细胞

# |    A     |   B   |
----------------------
1 |   Yes    |   1   |
----------------------
2 |   No     |   2   |
----------------------
3 |   Maybe  |   3   |
----------------------
4 |   No     |   2   |
----------------------

2 个答案:

答案 0 :(得分:2)

如果您只需要随机数字,那么您就不需要VBA。只需将您的单元格公式设置为:

"=RANDBETWEEN(1,3)"

但是,每次计算工作表时,随机数都会发生变化。为避免这种情况,您可以定义以下子项并将其关联,例如,使用操作按钮:

Sub makeRand()

    Dim targetRange As Range
    Dim xlCell As Range
    Dim upperBound As Integer
    Dim lowerBound As Integer


    Set targetRange = Range("B1:B4")
    upperBound = 3
    lowerBound = 1

    Randomize

    For Each xlCell In targetRange
        xlCell.Value = Int((upperBound - lowerBound + 1) * Rnd + lowerBound)
    Next xlCell


End Sub

答案 1 :(得分:1)

如果您需要做的只是使用vba 进行设置,则应该为您提供值1,2或3:

Range("B1:B4").Formula = "=RANDBETWEEN(1,3)"

如果您只需要 Excel公式,则只需将=RANDBETWEEN(1,3)粘贴到公式栏中即可。

如果您尝试根据A列值定义B列值,请使用:

Range("B1:B4").Formula = "=IF(A1 = ""Yes"", 1, IF(""No"", 2, If(""Maybe"", 3, ""ERROR"")))"

如果这些都不是你想要的,你将不得不更好地澄清。