Adrian
Adrian

Reputation: 2291

How to find and replace multiple values in Excel?

I have for example a column of 18000 domains and another list with 210.000 domain which those 18000 domains can be found. I need to do smth like CTRL + H, for find and replace, and in the find field I need to add the entire 18000 domains: smth like * domain1.com *, * domain2.com *, * domain3.com * and replace them with blank space. Tried this with find and replace from excel but it doesn't work to add more than 1 value in the Find field. How can i do it for multiple values?

Upvotes: 1

Views: 7184

Answers (1)

Sam
Sam

Reputation: 7303

VBA solution

You will need to change the two sheet references (data and edit sheet) data = source, edit = destination. I've also set the replace string to a variable so you can change this from an empty string if required.

If you need any other logic (ie Trim the strings before compare or a change to the strings case comparison) the code should be reasonably easy to tweak.

Hope this helps.

Sub ReplaceValues()


Dim dataSht As Worksheet
Dim editSht As Worksheet

Dim dataRange As Range

Dim dataColumn As Long
Dim editColumn As Long


Dim dataEndRow As Long
Dim editEndRow As Long

'sheet that holds all the values we want to find
Set dataSht = Sheet2

'sheet we want to edit
Set editSht = Sheet1


Dim replaceValue As String


'replace value is empty string
replaceValue = ""



'set the column of the data sheet to A
dataColumn = 1

'set the colmun of the sheet to edit to A
editColumn = 1


dataEndRow = dataSht.Cells(dataSht.Rows.count, dataColumn).End(xlUp).Row
editEndRow = editSht.Cells(editSht.Rows.count, editColumn).End(xlUp).Row





'this is the range of the data that we're looking for
Set dataRange = dataSht.Range(dataSht.Cells(1, dataColumn), dataSht.Cells(dataEndRow, dataColumn))


Dim count As Long
Dim val As String

    For i = 1 To editEndRow

    val = editSht.Cells(i, editColumn).Value

    count = Application.WorksheetFunction.CountIf(dataRange, val)

        If count > 0 And Trim(val) <> "" Then

        editSht.Cells(i, editColumn).Value = replaceValue

        End If

    Next i


End Sub

You can use wildcards with find/replace. So in your situation you should be able to use something like

domain* in the find what Field and nothing in the Replace field

Upvotes: 1

Related Questions