【问题标题】:How to Sort, Index, Random generate Sequence of Number from a range of cells如何排序、索引、随机从一系列单元格中生成数字序列
【发布时间】:2018-04-20 15:17:58
【问题描述】:

我正在尝试在列表之间生成随机数,例如开始年份是 1950,结束年份是 1960,我正在尝试的公式是

=VLOOKUP(RANDBETWEEN($D$3,$D$4),'SP500 Returns2'!$A$3:$F$103,2,0)

我也试过这个公式

=if($D$3 < $D$4, $D$3 + Randombetween(1,10),"")

但它只给我提供条件为真的值,并且只显示 2 或 3 个值,但我需要 1950-1960 之间的完整值,但每次打开工作簿或更改工作表时都有不同的顺序。

我还有一个随机生成按钮,它将仅从值列 A 填充列 B,我想要一个公式/函数/VBA 代码,可以在上面讨论的选择数字之间生成一个系列。

这是我的工作表的俯视图。

如何在 A 列中添加应该在年份选择之间生成范围的公式?我也试过这个公式

=Randombetween($D$3,$D$4) but it return duplicate values.

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    你可以使用这个子:

    Sub GenerateRandomYearsBetween()
        Dim myYear As Long, i As Long
        Dim years As New Collection
    
        For myYear = Range("D3") To Range("D4")
            years.Add myYear
        Next
    
        For myYear = 1 To years.Count
            i = Int((years.Count) * Rnd + 1)
            Range("A8").Offset(myYear).Value = years(i)
            years.Remove i
        Next
    End Sub
    

    您可以从相关事件处理程序中调用它


    或者你可以使用它对应的Function()

    Function GenerateRandomYearsBetween(startYear As Variant, endyear As Variant) As Variant
        Application.Volatile
        Dim myYear As Long, i As Long
        Dim initialYears As New Collection
        ReDim finalYears(1 To endyear - startYear + 1) As Long
    
        For myYear = startYear To endyear
            initialYears.Add myYear
        Next
    
        For myYear = 1 To initialYears.Count
            i = Int((initialYears.Count) * Rnd + 1)
            finalYears(myYear) = initialYears(i)
            initialYears.Remove i
        Next
    
        GenerateRandomYearsBetween = finalYears
    End Function
    

    您将作为“数组公式”放置在 适当数量的单元格(即与引用单元格之间的年数一样多的单元格)为

    =GenerateRandomYearsBetween($D$3;$D$4)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 2023-02-04
      相关资源
      最近更新 更多