Vba 如何在Excel中查找和替换多个值?

Vba 如何在Excel中查找和替换多个值?,vba,excel,Vba,Excel,例如,我有一列18000个域,另一列有210.000个域,可以找到这18000个域。我需要执行smth,比如CTRL+H,用于查找和替换,在查找字段中我需要添加整个18000个域:smth,比如*domain1.com*、*domain2.com*、*domain3.com*,并用空格替换它们。使用“从excel查找并替换”尝试此操作,但在“查找”字段中添加超过1个值无效。如何为多个值执行此操作?VBA解决方案 您需要更改两个图纸参考(数据和编辑图纸)数据=源,编辑=目标。我还将replace字

例如,我有一列18000个域,另一列有210.000个域,可以找到这18000个域。我需要执行smth,比如CTRL+H,用于查找和替换,在查找字段中我需要添加整个18000个域:smth,比如*domain1.com*、*domain2.com*、*domain3.com*,并用空格替换它们。使用“从excel查找并替换”尝试此操作,但在“查找”字段中添加超过1个值无效。如何为多个值执行此操作?

VBA解决方案

您需要更改两个图纸参考(数据和编辑图纸)数据=源,编辑=目标。我还将replace字符串设置为变量,以便在需要时可以将其从空字符串更改为空字符串

如果您需要任何其他逻辑(即在比较之前修剪字符串或更改字符串大小写比较),那么代码应该相当容易调整

希望这有帮助

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
Sub-ReplaceValues()
Dim dataSht As工作表
Dim editSht作为工作表
变暗数据范围作为范围
将数据列的长度设置为
将列设置为等长
Dim dataEndRow尽可能长
Dim editEndRow尽可能长
'表,其中包含我们要查找的所有值
设置dataSht=Sheet2
'我们要编辑的工作表
设置editSht=Sheet1
将替换值设置为字符串
'替换值为空字符串
replaceValue=“”
'将数据表的列设置为
dataColumn=1
'将要编辑的工作表的colmun设置为
editColumn=1
dataEndRow=dataSht.Cells(dataSht.Rows.count,dataColumn).End(xlUp).Row
editEndRow=editSht.Cells(editSht.Rows.count,editColumn).End(xlUp).Row
这是我们正在寻找的数据范围
设置dataRange=dataSht.Range(dataSht.Cells(1,dataColumn),dataSht.Cells(dataEndRow,dataColumn))
不算长
作为字符串的Dim val
对于i=1到editEndRow
val=editSht.Cells(i,editColumn).Value
count=Application.WorksheetFunction.CountIf(数据范围,val)
如果计数>0且修剪(val)“,则
editSht.Cells(i,editColumn).Value=replaceValue
如果结束
接下来我
端接头

可以将通配符与查找/替换一起使用。所以在你的情况下,你应该能够使用

域*
中查找内容
字段,在
替换
字段中不查找任何内容

VBA解决方案

您需要更改两个图纸参考(数据和编辑图纸)数据=源,编辑=目标。我还将replace字符串设置为变量,以便在需要时可以将其从空字符串更改为空字符串

如果您需要任何其他逻辑(即在比较之前修剪字符串或更改字符串大小写比较),那么代码应该相当容易调整

希望这有帮助

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
Sub-ReplaceValues()
Dim dataSht As工作表
Dim editSht作为工作表
变暗数据范围作为范围
将数据列的长度设置为
将列设置为等长
Dim dataEndRow尽可能长
Dim editEndRow尽可能长
'表,其中包含我们要查找的所有值
设置dataSht=Sheet2
'我们要编辑的工作表
设置editSht=Sheet1
将替换值设置为字符串
'替换值为空字符串
replaceValue=“”
'将数据表的列设置为
dataColumn=1
'将要编辑的工作表的colmun设置为
editColumn=1
dataEndRow=dataSht.Cells(dataSht.Rows.count,dataColumn).End(xlUp).Row
editEndRow=editSht.Cells(editSht.Rows.count,editColumn).End(xlUp).Row
这是我们正在寻找的数据范围
设置dataRange=dataSht.Range(dataSht.Cells(1,dataColumn),dataSht.Cells(dataEndRow,dataColumn))
不算长
作为字符串的Dim val
对于i=1到editEndRow
val=editSht.Cells(i,editColumn).Value
count=Application.WorksheetFunction.CountIf(数据范围,val)
如果计数>0且修剪(val)“,则
editSht.Cells(i,editColumn).Value=replaceValue
如果结束
接下来我
端接头

可以将通配符与查找/替换一起使用。所以在你的情况下,你应该能够使用


domain*
中找到什么
字段,而在
替换
字段中没有任何内容

这些值就是一个例子,我有唯一的值,而不是domain.com,smth如google.com、yahoo.com、bing.com……你有一个单独的表单上的列表吗?是的,我有一个单独的表单,我需要做smth,将它们全部添加到“查找”字段和“替换”字段的空白处。我可以编写一个VBA的小示例,它可以满足您的需要,如果您需要。。。给我5分钟5分钟我很乐观。。但我现在正在测试它,时间不长。这些值就是一个例子,我有唯一的值,而不是domain.com,smth,比如google.com,yahoo.com,bing.com……你有一个单独的表单上的列表吗?是的,我有一个单独的表单,我需要做smth,将它们全部添加到“查找”字段和“替换”字段的空白处。我可以编写一个VBA的小示例,它可以满足您的需要,如果您需要。。。给我5分钟5分钟我很乐观。。但我现在只是在测试,时间不长。