我的C列填充了空单元格或包含值“OK”的单元格。我需要每个包含文本“OK”的单元格将更改为增量值1,2,3等总共2642个单元格
C
- 1 [empty]
- 2 [empty]
- 3 [OK]
- 4 [empty]
- 5 [OK]
- 6 [empty]
需要看起来像: ç
- 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
答案 0 :(得分: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
答案 1 :(得分:0)
您可以在没有宏的情况下执行此操作:
OK
替换为=MAX(R1C1:R[-1]C)+1
或者,您也可以使用自动过滤器在没有R1C1样式的情况下执行此操作:
OK
OK
s =MAX($A$1:$A2)+1
- 使用 Ctrl - 输入输入。您需要稍微调整公式 - 将$A$1
替换为数据开始的第一行(或标题行) - 并将$A2
替换为活动单元格上方的单元格 - 甚至如果它被隐藏了!