![]() |
Retry - Find and Replace Macro
Hi,
(XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
S
Try this Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "saturnin02" <saturnin02_at_hotmail.com wrote in message ... Hi, (XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
You're the best Dick.
Works like a charm! It will save me loads of time. Tx a lot! S "Dick Kusleika" wrote in message ... S Try this Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "saturnin02" <saturnin02_at_hotmail.com wrote in message ... Hi, (XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
Dick,
I copied and pasted it in a test workbook and it worked great. I then opened the "target" workbook did the same procedure, open VB Editor, Add Module and Copy and pasted the code in it and NOTHING happens at all. I cannot figure it out. Here is how it appears in the VB Editor: Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub Am I missing something...? S "Dick Kusleika" wrote in message ... S Try this Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "saturnin02" <saturnin02_at_hotmail.com wrote in message ... Hi, (XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
Dick, I think I know why.
In the target workbook, the find and replace is not in Sheet 1 but changes as number of sheets are added. I guess I need to modify the macro and replace where it says sheet1 to ...is it Active Window or something similar...? Tx, S "Dick Kusleika" wrote in message ... S Try this Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "saturnin02" <saturnin02_at_hotmail.com wrote in message ... Hi, (XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
Dick,
This is what I did: (seems to work--let me know if I did it right or not)--I changed Sheet1 with ActiveSheet) Sub Add2() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = ActiveSheet.Range("A1", _ ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub "Dick Kusleika" wrote in message ... S Try this Sub Add1() Dim cell As Range Dim Rng As Range Dim i As Long Dim lVal As Long Dim sNew As String Set Rng = Sheet1.Range("A1", _ Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp)) For Each cell In Rng.Cells For i = 1 To Len(cell.Value) If IsNumeric(Mid(cell.Value, i, 2)) Then lVal = Val(Mid(cell.Value, i, 2)) sNew = Left(cell.Value, i - 1) If lVal = 99 Then lVal = 0 Else lVal = lVal + 1 End If sNew = sNew & Format(lVal, "00") sNew = sNew & Right(cell.Value, Len(cell.Value) - i - 1) cell.Value = sNew Exit For End If Next i Next cell End Sub -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "saturnin02" <saturnin02_at_hotmail.com wrote in message ... Hi, (XL 2002, Win XP--VB Newbie) I have in cells A1 = mm97z.60 B1 = mm97z.15 C1 = mm97z.5 etc... I need to create a macro that will look for the first digits it encouters in the cells and replace then with same digits but +1 (e.g. the 97 in cell A1 --mm97z.60 would turn into 98 with result mm98z.60. After reaching 99, it needs to continue not as 100, 101, etc., but as 00, 01, etc. This needs to be done for a range of cells that are always in Column A but with various possible lengths which I usually select manually with Control\End Down Arrow. Tx for the suggestions. S |
Retry - Find and Replace Macro
This is what I did: (seems to work--let me know if I did it right or not)--I changed Sheet1 with ActiveSheet) Looks good to me. The important thing is that it works. -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com |
Retry - Find and Replace Macro
Thanks a lot for your help.
S "Dick Kusleika" wrote in message ... This is what I did: (seems to work--let me know if I did it right or not)--I changed Sheet1 with ActiveSheet) Looks good to me. The important thing is that it works. -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com |
All times are GMT +1. The time now is 09:11 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com