I'm not at a machine where I can write any code at the moment, so I'll just offer some general feedback based on what I see.
1 - I believe I've mentioned this before: You don't have to Select objects in VBA in order to perform an operation them. Your code will be much more efficient if you learn to eliminate all of the Select instructions.
ActiveCell = "Rate"
...can be written as:
ActiveCell.Offset(0, 1) = "Rate"
Rarely, if ever, do you need to Select a Sheet or a Range or a Cell. Look back at all the code that I have written in this forum. You'd be hard pressed to find many situations where I used a Select instruction.
2 - You should consider using the Application.InputBox method instead of the InputBox function. The Application.InputBox method is much more powerful, allowing for the use of the Cancel button and other means to verify the user input. See here:
e.g. You can check for the Cancel button by checking if the input is False:
' Get input from user
myInput = Application.InputBox("Enter a value")
' Exit Sub if user clicks Cancel
If myInput = False Then Exit Sub
3 - Using Find and FindNext is much more efficient than a Do-While loop. Looping through every cell (and actually Selecting them!) is one of the most inefficient ways to find repetitive values in a range of cells. See here:
The first example on that page used to be available in the VBA Help files. Why they took it out is beyond me. I have copied that example into my code countless times and then modified it to fit the searches I need to perform.
4 - Seriously - your entire macro could be rewritten without a single Select instruction.
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.