VBA code to return text in a cell if another cell starts with numbers or 2 letters

SamCha

New Member
Joined
Nov 23, 2020
Messages
30
Office Version
  1. 2016
Platform
  1. Windows
Hi all,

Please can you help me with a code where the Column D till the last row (range varies) will return the letters:

1). 'SW' : if values in Column F till the last row ( range varies) starts with numbers

2). 'IB' : if values in Column F starts with two letters ( just like IBAN numbers) and the numbers - the character length is greater than equal to 15.

Thanks in advance
 

Excel Facts

What did Pito Salas invent?
Pito Salas, working for Lotus, popularized what would become to be pivot tables. It was released as Lotus Improv in 1989.
You haven't accounted for entries which do not meet either of your criteria (if that is even possible).
If that is a possibility (i.e. column F starts with just one letter), what do you want to return in those instances?

Please post some examples of what your data looks like, and your expected results.
Please be sure to try to cover all the different scenarios in your example.
 
Upvote 0
Hi
You haven't accounted for entries which do not meet either of your criteria (if that is even possible).
If that is a possibility (i.e. column F starts with just one letter), what do you want to return in those instances?

Please post some examples of what your data looks like, and your expected results.
Please be sure to try to cover all the different scenarios in your example.
Hi Joe4,

If a particular cell in Column F starts with one letter and then numbers for eg A1234567 it will show in Column D as 'SW'.

So, what I meant to say is any cell other than having the format for eg:
AD1400080001001234567890 ( starting with 2 letters and then charaters greater than equal to 15) will show 'SW' or else will show 'IB'.

Thanks
 
Upvote 0
Try this:
VBA Code:
Sub MyMacro()

    Dim lr As Long
    Dim r As Long
    
    Application.ScreenUpdating = False
    
'   Find last row with data in column F
    lr = Cells(Rows.Count, "F").End(xlUp).Row
    
'   Loop through all rows in column F starting in row 1
    For r = 1 To lr
'       Check entries in column F
        If IsNumeric(Left(Cells(r, "F"), 1)) Or _
            IsNumeric(Mid(Cells(r, "F"), 2, 1)) Or _
            (Len(Cells(r, "F")) <= 15) Then
            Cells(r, "D") = "IB"
        Else
            Cells(r, "D") = "SW"
        End If
    Next r
        
    Application.ScreenUpdating = True
    
End Sub
Note that if you are starting anywhere other than row 1, change the starting row number in this line:
For r = 1 To lr
 
Upvote 0
Solution
Try this:
VBA Code:
Sub MyMacro()

    Dim lr As Long
    Dim r As Long
   
    Application.ScreenUpdating = False
   
'   Find last row with data in column F
    lr = Cells(Rows.Count, "F").End(xlUp).Row
   
'   Loop through all rows in column F starting in row 1
    For r = 1 To lr
'       Check entries in column F
        If IsNumeric(Left(Cells(r, "F"), 1)) Or _
            IsNumeric(Mid(Cells(r, "F"), 2, 1)) Or _
            (Len(Cells(r, "F")) <= 15) Then
            Cells(r, "D") = "IB"
        Else
            Cells(r, "D") = "SW"
        End If
    Next r
       
    Application.ScreenUpdating = True
   
End Sub
Note that if you are starting anywhere other than row 1, change the starting row number in this line:
For r = 1 To lr
Thanks a lot Joe4. This worked perfect to what was required, however, its also filling up the cells in Column D to the last row which have formulas but no values. As the range will keep varying I will not be able to apply the code to a specific range. Are you able to suggest any solution the issue please.
 
Upvote 0
Thanks a lot Joe4. This worked perfect to what was required, however, its also filling up the cells in Column D to the last row which have formulas but no values. As the range will keep varying I will not be able to apply the code to a specific range. Are you able to suggest any solution the issue please.
What exactly is in column F? Formulas or hard-coded values? If formula, what is the formula?
How are these (new values) being added to the worksheet?
 
Upvote 0
What exactly is in column F? Formulas or hard-coded values? If formula, what is the formula?
How are these (new values) being added to the worksheet?
Hi Joe4,
Column F doesnt have any formula neither does Column D. The formulae are in Column A5:C600. A simple IF function and vlookup functions. So apparently this code is assuming that the last row is 600th row
 
Upvote 0
Column F doesnt have any formula neither does Column D. The formulae are in Column A5:C600. A simple IF function and vlookup functions. So apparently this code is assuming that the last row is 600th row
The code makes no such assumptions.

It is dynamically finding the last row by looking for the last entry in column F here:
VBA Code:
'   Find last row with data in column F
    lr = Cells(Rows.Count, "F").End(xlUp).Row
If it is going down to line 600, then that means that you have an entry in cell F600.

If you enter this formula in any blank cell, what does it return?
Excel Formula:
=LEN(F600)
If it returns anything other than 0, then you have something in cell F600 (whether it is visible or not).
 
Upvote 0
The code makes no such assumptions.

It is dynamically finding the last row by looking for the last entry in column F here:
VBA Code:
'   Find last row with data in column F
    lr = Cells(Rows.Count, "F").End(xlUp).Row
If it is going down to line 600, then that means that you have an entry in cell F600.

If you enter this formula in any blank cell, what does it return?
Excel Formula:
=LEN(F600)
If it returns anything other than 0, then you have something in cell F600 (whether it is visible or not).
Thanks a lot Joe4. It was my bad. There were formula in cell F. All good now the code is working perfectly :)
 
Upvote 0
You are welcome.

If there is another column that makes more sense to look at to find the last row of data, you can just change the "F" in that formula to whatever column works better.
 
Upvote 0

Forum statistics

Threads
1,214,651
Messages
6,120,744
Members
448,989
Latest member
mariah3

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top