Solved

# Excel Replace Items

Posted on 2011-03-14
203 Views
Last Modified: 2012-06-27
Hi Experts,

Can someone please tell me if it possible to replace more than one item in excel?

For example, if I wanted to replace the numbers 5,4,3,2,1 with 1,2,3,4,5 can I do that in one shot?

At the moment, I would have to replace 5, with 1, then go back in and replace 4 with 2 etc...

Cheers

Carlton
0
Question by:cpatte7372
7 Comments

LVL 85

Expert Comment

ID: 35127903
No you can't. And doing it one at a time will be tricky since you'll end up replacing items multiple times - e.g. you convert 5 to 1, then later you convert all 1s to 5s!
0

LVL 37

Expert Comment

ID: 35128374
Your problem will come when you get past 3.....

Replace all 5 with 1
Replace all 4 with 2
3 = 3 anyway
Replace all 2 with 4 !!

Hold on!! All the ones that were 4 became 2! Now you dont know what 2 is a 2 and what used to be 4!

Needs a bit more thinking behind this one.
0

LVL 30

Expert Comment

ID: 35128735
>>>>Can someone please tell me if it possible to replace more than one item in excel?

Yes it is possible via VBA Code. Let me create a sample for you.

Sid
0

LVL 6

Expert Comment

ID: 35128790
If the numbers are in a single cell, they you can do a find and replace.  Type 5,4,3,2,1 in the find and 1,2,3,4,5 in the replace field.  You can do each one individually by clicking replace, or all at one time with replace all.
0

LVL 30

Accepted Solution

SiddharthRout earned 500 total points
ID: 35129056
Ok Here is the sample. Please note that for realistic situation, you will have to change the code. The logic that I am using is to replace the values of the numbers with their ASCII values and then doing a final replace. I also took the liberty to create multiple sample data i.e I pasted 1-5 multiple times.

Hope this is what you wanted?

Sid

Code Used

``````Option Explicit

Private Sub CommandButton1_Click()
Dim rng As Range, aCell As Range, bCell As Range
Dim ws As Worksheet
Dim ReplaceChar As Long, i As Long, j As Long
Dim ExitLoop As Boolean

Set ws = Sheets("Sheet1")

Set rng = ws.Range("A1:A15")

For Each aCell In rng
aCell.Value = Asc(aCell.Value)
Next

j = 53
For i = 49 To 53
ReplaceChar = Chr(j)
j = j - 1
Set aCell = rng.Find(What:=i, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

ExitLoop = False
If Not aCell Is Nothing Then
Set bCell = aCell
aCell.Value = ReplaceChar
Do While ExitLoop = False
Set aCell = rng.FindNext(After:=aCell)
If Not aCell Is Nothing Then
If aCell.Address = bCell.Address Then Exit Do
aCell.Value = ReplaceChar
Else
ExitLoop = True
End If
Loop
End If
Next i
End Sub
``````

Sample.xls
0

Author Comment

ID: 35129901
Sid,

That is exactly what I wanted.

You've come through again.

Cheers man.
0

LVL 30

Expert Comment

ID: 35130000
Glad to be of help :)

Sid
0

## Join & Write a Comment Already a member? Login.

### Suggested Solutions

Introduction While answering a recent question (http:/Q_27311462.html), I created an alternative function to the Excel Concatenate() function that you might find useful.  I tested several solutions and share the results in this article as well as t…
This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.

#### 757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

#### Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!