【问题标题】:vba loop through column and if certain value then incrementvba遍历列,如果某个值则增加
【发布时间】:2013-02-20 21:27:04
【问题描述】:

我有一个 C 列,其中填充了空单元格或包含值“OK”的单元格。我需要将包含文本“OK”的每个单元格更改为增量值 1、2、3 等。总共 2642 个单元格

   C

- 1 [empty]
- 2 [empty]
- 3 [OK]
- 4 [empty]
- 5 [OK]
- 6 [empty]

需要看起来像: C

- 1 [empty]
- 2 [empty]
- 3 [1]
- 4 [empty]
- 5 [2]
- 6 [empty]

基本上我需要自动增量,但是当过滤数据自动增量不起作用时

我使用自动递增所有值的代码,不会在包含单词“OK”的单元格上显示值,如下所示:

   C

- 1 [1]
- 2 [2]
- 3 [empty]
- 4 [4]
- 5 [empty]
- 6 [6]

代码:

    Sub Macro1()
    mynumber = 1
    Dim r As Range, cell As Range
    Set r = Range(Range("C1"), Range("C2642").End(xlDown))
    For Each cell In r
      If cell.Value = OK Then cell.Value = mynumber
       mynumber = mynumber + 1
    Next
    End Sub

【问题讨论】:

    标签: excel vba range increment


    【解决方案1】:

    您的代码很接近,但您遇到的问题是您的单元格值正在检查 OK 认为它是一个变量。为了避免这种情况,您要做的第一件事是将Option Explicit 放在每个模块的顶部,以便在您没有声明变量时告诉您。

    现在您需要做的就是将 'OK' 设为像 "OK" 这样的字符串。您还需要在 If 语句中增加您的号码,否则即使您不希望它也会继续增加。

    编辑:您也可以更简单地通过在Range 方法中定义单元格,就像在这段代码中一样。它不像使用End 那样灵活,但如果你有一个固定的范围就可以了。

    试试这个代码:

    Option Explicit
    
    Sub Macro1()
        Dim r As Range, cell As Range, mynumber As Long
    
        Set r = Range("C1:C2642")
    
        mynumber = 1
        For Each cell In r
            If cell.Value = "OK" Then
                cell.Value = mynumber
                mynumber = mynumber + 1
            End If
        Next
    End Sub
    

    【讨论】:

      【解决方案2】:

      你可以在没有宏的情况下做到这一点:

      1. 更改为 R1C1 参考样式(文件选项卡->选项->计算->R1C1参考样式
      2. 选择整列
      3. 替换对话框(Ctrl-H
      4. 将所有OK 替换为=MAX(R1C1:R[-1]C)+1
      5. 如果您愿意,可以复制并粘贴特殊值
      6. 取消选中 R1C1 参考样式

      或者,您也可以使用自动过滤器在没有 R1C1 样式的情况下执行此操作:

      1. 对列应用自动筛选(Ctrl-Shift-L
      2. 过滤OK
      3. 选择所有过滤的OKs
      4. 输入以下公式:=MAX($A$1:$A2)+1 - 使用 Ctrl-Enter 输入。您需要稍微调整公式 - 将 $A$1 替换为您的数据开始的第一行(或标题行) - 并将 $A2 替换为 活动单元格上方的单元格 - 即使它是隐藏的!
      5. 删除自动筛选(Ctrl-Shift-L)并根据需要复制/粘贴特殊值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多