在Excel中查找并替换多行

在Excel中查找并替换多行,excel,ms-office,vba,Excel,Ms Office,Vba,我有一个文档,上面有产品长度、产品名称和产品价格 我已使用我在网上找到的代码替换产品价格: Sub Multi_FindReplaceALL_pvc_replace_new() 'PURPOSE: Find & Replace a list of text/values throughout entire workbook 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault Dim sht As Worksheet Dim fndLis

我有一个文档,上面有产品长度、产品名称和产品价格

我已使用我在网上找到的代码替换产品价格:

Sub Multi_FindReplaceALL_pvc_replace_new()
'PURPOSE: Find & Replace a list of text/values throughout entire workbook
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long

fndList = Array("2 ft", "PVC", "390")
rplcList = Array("2 ft", "PVC", "290")

'Loop through each item in Array lists
 For x = LBound(fndList) To UBound(fndList)
'Loop through each worksheet in ActiveWorkbook
  For Each sht In ActiveWorkbook.Worksheets
    sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
      SearchFormat:=False, ReplaceFormat:=False
  Next sht

  Next x

End Sub
我的问题是,这个VB脚本正在取代亚克力的定价以及产品名称

任何帮助都将不胜感激。如果需要,我还可以提供任何其他信息


文档的图像链接:

您只有一张吗?此代码将与打印屏幕中的工作表一起使用,但是它硬编码到值所属的当前列。如果您需要它处理不同的值或不同的列,可以稍微放宽它

Sub Multi_FindReplaceALL_pvc_replace_new()
'PURPOSE: Find & Replace a list of text/values throughout entire workbook
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim sht As Worksheet
Dim i As Integer

Dim lastRow As Integer

'get the last row in the sheet
With ActiveSheet
  lastRow = .Cells(.Rows.Count, "I").End(xlUp).Row
End With

'Loop through each row in the sheet
 For i = 1 To lastRow
'Loop through each worksheet in ActiveWorkbook
    If Cells(i, 9).Value = "2 ft" And Cells(i, 11).Value = "PVC" Then
        Cells(i, 20).Value = "290"
    End If
  Next i

End Sub

基本上,您以前的代码只是在整个工作表中运行,并更改数组中的所有值。此函数逐行执行,专门比较包含值的列

是否只有一张表?此代码将与打印屏幕中的工作表一起使用,但是它硬编码到值所属的当前列。如果您需要它处理不同的值或不同的列,可以稍微放宽它

Sub Multi_FindReplaceALL_pvc_replace_new()
'PURPOSE: Find & Replace a list of text/values throughout entire workbook
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim sht As Worksheet
Dim i As Integer

Dim lastRow As Integer

'get the last row in the sheet
With ActiveSheet
  lastRow = .Cells(.Rows.Count, "I").End(xlUp).Row
End With

'Loop through each row in the sheet
 For i = 1 To lastRow
'Loop through each worksheet in ActiveWorkbook
    If Cells(i, 9).Value = "2 ft" And Cells(i, 11).Value = "PVC" Then
        Cells(i, 20).Value = "290"
    End If
  Next i

End Sub

基本上,您以前的代码只是在整个工作表中运行,并更改数组中的所有值。此函数逐行运行,专门比较包含您的值的列

请解释您希望代码如何工作。定价与您发布的代码有什么关系?我们/您如何知道更新后的价格?我想将所有2英尺PVC产品的2英尺PVC价格从390改为290。这有意义吗?这是一个shopify导出产品CSV文档。这有意义-看起来您当前正在做的是将“2 ft”替换为“2 ft”,“PVC”替换为“PVC”,将“390”替换为“290”-因此您看到的唯一变化是所有“390”值都更改为“290”。请解释您希望您的代码如何工作。定价与您发布的代码有什么关系?我们/您如何知道更新后的价格?我想将所有2英尺PVC产品的2英尺PVC价格从390改为290。这有意义吗?这是一个shopify导出的产品CSV文档。这有意义-看起来您目前正在做的是将“2 ft”替换为“2 ft”,“PVC”替换为“PVC”,将“390”替换为“290”-因此您看到的唯一变化是所有“390”值都更改为“290”。当然,更简单的方法是在列中添加一个过滤器,然后按选项1和选项2进行过滤,然后您可以同时编辑所有行Hi Kudu2-我尝试了该代码,出于某种原因,我无法将PVC价格从2英尺线的390替换为290。哦,对不起,我以为您的选项1和选项2在b列和d列中。我已经更新了相应列的代码。但正如我所说,如果在列名中添加一个过滤器,那么处理大量数据就容易多了。请看,当然更简单的方法是在列中添加一个过滤器,然后按选项1和选项2进行过滤,然后您可以同时编辑所有行Hi Kudu2-我尝试了该代码,但由于某些原因,我无法将PVC价格从2英尺线的390替换为290。哦,对不起,我以为你的选项1和选项2在b列和d列。我已经更新了相应列的代码。但正如我所说,如果在列名中添加一个过滤器,那么处理大量数据就容易多了。看见