I have a column C filled with empty cells or cells that contain value "OK". I need that every cell which contains text "OK" will be change to incremented value 1,2,3 etc. total 2642 cells
C
- 1 [empty]
- 2 [empty]
- 3 [OK]
- 4 [empty]
- 5 [OK]
- 6 [empty]
Need to look like:
C
- 1 [empty]
- 2 [empty]
- 3 [1]
- 4 [empty]
- 5 [2]
- 6 [empty]
Basically i need to autoincrement but when filter data autoincrement doesn't work
Code i use autoincrements all values by not display value on the the cell that contain word "OK" like this:
C
- 1 [1]
- 2 [2]
- 3 [empty]
- 4 [4]
- 5 [empty]
- 6 [6]
Code:
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
Your code is close but the problem you are having is that your cell value is checking OK
thinking it is a variable. To avoid this the first thing you want to do is put Option Explicit
at the top of each module to tell you when you haven't declared variables.
Now all you need to do is make 'OK' a string like "OK"
. You also need to increment your number inside the If
statement otherwise it'll keep incrementing even when you don't want it to.
Edit: you can also your range a bit more simply by just defining the cells in the Range
method like in this code. Its not as flexible as using End
but if you have a fixed range will do the trick.
Try this code:
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
You can do this without a macro:
- Change to R1C1 reference style (File tab->Options->Calculation->R1C1 reference style
- Select the full column
- Replace dialog (Ctrl-H)
- Replace all
OK
with =MAX(R1C1:R[-1]C)+1
- If you wish, copy and paste special the values
- Uncheck R1C1 reference style
Alternatively, you can also do this without R1C1 style by using an Autofilter:
- Apply an AutoFilter to your column (Ctrl-Shift-L)
- Filter for
OK
- Select all filtered
OK
s
- Enter the following formula:
=MAX($A$1:$A2)+1
- enter it with Ctrl-Enter. You need to slightly adjust the formula - replace $A$1
with the first row your data start (or the header row) - and $A2
with the cell above your active cell - even if it's hidden!
- Remove the AutoFilter (Ctrl-Shift-L) and copy/paste special values if you wish