0

我有一列 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
4

2 回答 2

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
于 2013-03-06T07:36:23.097 回答
0

您可以在没有宏的情况下执行此操作:

  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. 选择所有过滤OK的s
  4. 输入以下公式: - 使用-=MAX($A$1:$A2)+1输入。您需要稍微调整公式 - 用您的数据开始的第一行(或标题行)替换 - 以及活动单元格上方的单元格- 即使它是隐藏的!CtrlEnter$A$1$A2
  5. 如果您愿意,请删除自动筛选 ( Ctrl- Shift- L) 并复制/粘贴特殊值
于 2013-03-06T07:46:11.573 回答