MS Excel随意挑选名称,自由select要select的数量

大家,

我试图自动化我的Excel文件来select随机数据来检查审计。 我想使随机数发生器,我可以input多less数据来select。 在Excel中可能吗? 为了更好的解释我在下面加了一些截图。 我希望你能帮助我。

链接的图像

使用通常的Excel函数确实是不可能的…但是,Excel(和其他Microsoft Office应用程序)运行一个底层的编程语言:visual basic。 这是去的方式:)

这里是一个makro,它在整个列中select一个与search匹配的随机字段。

Sub SelectRandomSearch() 'Declaring Variables Dim y As Integer Dim x As Integer Dim startY As Integer Dim lastY As Integer Dim search As String Dim hits As Integer Dim random As Integer Dim hitsArr() As Integer Dim controlPart As Double Dim controlsNum As Integer Dim controlArr() As Integer 'Declaring Values startY = 1 'lowest Y-Coordianate of the input column x = 1 'X-Coordiante of the input column controlPart = 0.1 'Fraction of the hits, that need to be controled 'Get search value search = InputBox("Enter a search value", "Searching", "") 'Getting Column Lenght and reset coloring y = startY Do Until IsEmpty(Cells(y, x).Value) Cells(y, x).Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With y = y + 1 Loop 'Getting number of search hits lastY = y - 1 hits = WorksheetFunction.CountIf(Range(Cells(startY, x), Cells(lastY, x)), search) 'Fill hitsArr with row-numbers of hits ReDim hitsArr(hits + 1) hits = 1 For y = startY To lastY If Cells(y, x) = search Then hitsArr(hits) = y hits = hits + 1 End If Next y hits = hits - 1 'Getting number of controlled Entries controlsNum = WorksheetFunction.RoundUp(hits * controlPart, 0) 'Shuffle a part of hitsArr ReDim controlArr(controlsNum + 1) For y = 1 To controlsNum random = ((hits - y + 1) * Rnd + y) hitsArr(0) = hitsArr(y) hitsArr(y) = hitsArr(random) hitsArr(random) = hitsArr(0) Next y 'Mark every hit that needs to be controlled For y = 1 To controlsNum Cells(hitsArr(y), x).Select With Selection.Interior .Color = 49407 End With Next y End Sub 

你可能需要稍微改变makro,但这基本上是我能想到的所有可能需要:)

我希望这有帮助!

现在makro标志着需要检查的领域是这样的:

在这里输入图像描述