View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Mikey B[_2_] Mikey B[_2_] is offline
external usenet poster
 
Posts: 9
Default Conditional replace

Thanks Charles. This works great.

"Die_Another_Day" wrote:

Try this subroutine.
Sub ReplaceAll()
Dim cnt As Long
Dim Vpos As Long 'V position
Dim CrCl As Range 'Current Cell
Dim WS As Worksheet
Const Cmn As String = "A"
For Each WS In ActiveWorkbook.Sheets
For cnt = 1 To WS.Range(Cmn & Rows.Count).End(xlUp).Row
Set CrCl = WS.Range(Cmn & cnt)
Vpos = InStr(1, CrCl, "V")
If Vpos 0 Then
If Not IsNumeric(Mid(CrCl, Vpos - 1, 1)) Then
CrCl.Value = Left(CrCl, Vpos - 1) & "-" & _
Right(CrCl, Len(CrCl) - Vpos + 1)
End If
End If
Next
Next
End Sub

Charles

Mikey B wrote:
Ok, thanks for your reply but it does not actually do what I was looking for.
The reason why I did not use the normal find/replace is that this results in
adding a dash in front of the "V" in all cases including when numbers precede
the "V" which is what I am trying to avoid.
I thought there might have been a way to do this programatically using a
if...then statement.

Also, in some cases the dash is already already correctly in place and
adding another dash would not be wanted.

I appreciate any help.

"Die_Another_Day" wrote:

Ctrl+H
Find What = "V"
Replace With = "-V"
Expand options
Within = Workbook
Match Case = True

Click "Replace All"

Charles Chickering
Mikey B wrote:
I am looking to search one column for "V" in a string.

When there is a letter preceding the "V" I need to add "-" between the
letter and the "V".
When there is a number preceding the "V" then I need it to leave it like it
is.

Results need to look like this.

old new
1MSV01 1MS-V01
1MS4V01 1MS4V01

Anyone have any ideas how I could do this quickly. I have several sheets
with several thousand records each.