选择随机行并做一些事情 - 在范围内选择多行

Posted

技术标签:

【中文标题】选择随机行并做一些事情 - 在范围内选择多行【英文标题】:Selected random rows and do stuff - select multiple row on range 【发布时间】:2021-12-30 17:03:30 【问题描述】:

这似乎很简单,但我正在努力...... 我有这个简单的代码可以根据当前数据从黑色单元格范围中选择整行,这是完全随机的。 因为单元格 F5 F7 F9 F13 是空的,所以它会选择整行。所以,我希望将第 1 列 [A] 和 8 [H] 的值更改为“Estoque”,颜色为浅蓝色. 我坚持这一点。请帮忙?

 On Error Resume Next
 Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Select

【问题讨论】:

从您的其他帖子中,我看到您已经努力解决并提出了具体问题。这个问题虽然令人困惑,模糊且过于广泛。您能否展示正在尝试执行您想要的操作的代码(即写入并更改特定单元格的颜色)并解释它没有按照您的目标执行什么操作。否则,您只是要求这里的其他人免费为您编写代码。 您的意思是,H 列中的每个空白单元格和A 列中的每个对应(不一定为空)单元格都应该发生这种情况?还是A 列中的单元格也为空? 【参考方案1】:

SpecialCells-Intersect 组合

Range.SpecialCells method

Application.Intersect method

这会将Estoque 写入已使用范围的H 列的所有空单元格。它还将Estoque写入A列对应的单元格(同一行中的单元格),无论它们是否为空。

Option Explicit

Sub Estoque()
    
    Dim rg As Range
    
    On Error Resume Next
        Set rg = Intersect(Range("A:A,H:H"), _
            Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow)
    On Error GoTo 0
    
    If rg Is Nothing Then
        MsgBox "Nope!", vbCritical
        'Exit Sub
    Else
        rg.Value = "Estoque"
        MsgBox "Estoque!", vbInformation
    End If
    
End Sub

【讨论】:

非常感谢。我不知道 Intersect 方法,我被想法困住了。 :-) 不客气。请记住,在处理非连续范围时,您无法成功使用.Resize.Rows.Columns。通常只有.Cells.Offset.EntireRow.EntireColumn。所以Intersect 是一种值得记住的救世主。

以上是关于选择随机行并做一些事情 - 在范围内选择多行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 从大表中选择随机行

选择随机行PostgreSQL的最佳方法

从文件中选择随机行

在 Oracle 中选择随机行

从 SQL Server 表中选择 n 个随机行

Pandas 数据框中的随机行选择