我充满了空单元格或包含值“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
您的代码是接近,但您所遇到的问题是,你的价值是检查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
你可以做到这一点没有一个宏:
- 更改为R1C1引用样式( 文件标签- > 选项 - > 计算 - > R1C1引用样式
- 选择整列
- 替换对话框( 按Ctrl - 1H)
- 更换所有
OK
与=MAX(R1C1:R[-1]C)+1
- 如果你愿意,复制和粘贴特殊值
- 取消选中R1C1引用样式
或者,你也可以做到这一点没有R1C1样式通过使用自动筛选:
- 应用自动筛选将您的列( 按Ctrl - Shift键 - L)
- 为筛选
OK
- 选择所有过滤
OK
小号 - 输入下面的公式:
=MAX($A$1:$A2)+1
-以Ctrl进入它- 输入 。 你需要稍微调整配方-取代$A$1
和-与第一行数据开始(或标题行) $A2
与活动单元格上方的单元格 -即使它是隐藏的! - 删除自动筛选( 按Ctrl - Shift键 - L)和复制/如果你想粘贴特殊值