【问题标题】:Creating VBA If Then Loop through Range of Cells创建 VBA If Then 循环遍历单元格范围
【发布时间】:2019-06-05 14:33:27
【问题描述】:

我有两个单独的代码,但我不知道如何组合它们。我想检查一列数字并测试它们是否 >= 100,如果为真则更改结果。

我不知道这一列会有多少行,所以我在这个宏的另一部分使用了以下行。

Range("D1:D" & Final & "").

我已经通过像这样直接指定单个单元格成功地测试了它:

Sub CellTest()
Dim cell As Integer
cell = Range("D7").Value
If cell >= 100 Then
Range("D7").Value = "NoSplit"
End If
End Sub

谁能帮我把这些组合起来,让它遍历每一行并测试值?

更新:

此电子表格是通过网页上的脚本下载的,并且每次都有不同的名称。我会提前知道一些事情,例如...

  • 只有一张
  • 有问题的列是 D 列
  • D 列将只有不带小数点的数字
  • 我不会提前知道这一列有多少行

【问题讨论】:

  • 我看到你列出了一个答案,但会带来一些循环的基础知识。循环将遍历一个值数组;而已。你用它做什么可以是简单的也可以是复杂的。让我们使用“i”作为变量来解释迭代......您的数据可以是 A (1) 列中从第 1 行到第 10 行的单元格范围,并且您希望逐个进行,例如 1 到 2、2到 3、3 到 4 等。您可以生成一个 for 循环来解决此问题,例如 For i = 1 到 10 步骤 1,然后您可以使用迭代值(行)使用 cells(i,1).value = "" 在你的循环里面。
  • @Cyril 我看到了该方法的演示,但由于我不知道有多少行,所以不确定如何使用它。

标签: excel vba loops if-statement


【解决方案1】:

这就是我最终使用的......

Public Sub testforhundred()
    Dim rcell As Range, rng As Range
    Set rng = Application.ActiveSheet.Range("D1:D" & Application.ActiveSheet.UsedRange.Rows.Count)
    For Each rcell In rng.Cells
        If rcell.Value >= 100 Then rcell.Value = "NoSplit"
    Next rcell
End Sub

【讨论】:

    【解决方案2】:
    Public Sub testforhundred()
        Dim rcell As Range, rng As Range
        Set rng = ThisWorkbook.Worksheets("Sheet1").Range("D1:D" & ThisWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count)
        For Each rcell In rng.Cells
            If rcell.Value >= 100 Then rcell.Value = "NoSplit"
        Next rcell
    End Sub
    

    这很容易将它们组合在一起。但是,如果行数很大,由于与工作表对象交互会很耗时

    【讨论】:

    • 嗯,工作表名称每次使用都会改变,所以硬编码是不行的:(
    • 是指定工作表还是ActiveSheet
    • @FreeSoftwareServers,您的问题没有提及有关动态工作表的任何内容。如果这是一个标准,则需要在您的问题中列出。即使有你的评论,也不清楚是哪张纸。你想在所有工作表中循环这段代码吗?一些单子?它只会在选定的工作表上运行吗?请edit您的问题并指定任何标准
    • @FreeSoftwareServers 对于所有广泛的目的,答案可以解释如何做某事(不一定是可复制粘贴的响应),这是一个可以理解的假设,即提出问题的人有一些与专家交谈时对主题的理解。从本质上讲,问题的发布者必须能够识别专家在回答所述问题时提出的观点。
    • 使用this,您应该能够将Doug 的答案应用于您的代码。 (如果它解决了您的问题,请不要忘记将其标记为正确)。
    猜你喜欢
    • 2014-09-25
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2021-06-28
    相关资源
    最近更新 更多