如何使用数组在选定的单元格中查找/替换多个值?

第20天

我试图在名称为“ wsPivotPreCCI”的Excel工作表中构建VBA宏。

在“ C”列中,我想找到多个文本字符串,并将其替换为相同的文本字符串。
例:

Find: "TIPS TELEPHONE", "TIPS TELEPHONE OTHER", "TIPS, TELEPHONE", or "TIPS,TELEPHONE"
Replace All with: "TIPS, TELEPHONE, OTHER"

经过数小时的研究和多次尝试(以下说明),我发现这些帖子是最有用的,但是我似乎仍然无法正确地完成“循环和替换”。

VBA使用数组查找/替换单元格范围

使用数组VBA查找和替换数据库中的值

我的查找/替换数组是:

FindTips = Array("TIPS TELEPHONE", "TIPS TELEPHONE OTHER", "TIPS, TELEPHONE", "TIPS,TELEPHONE")
RplcTips = Array("TIPS, TELEPHONE, OTHER")
        
FindAuto = Array("AUTO - RENTAL, PARKING & TOLLS", "PARKING AND TOLLS", "PARKING TOLLS", _
"RENTAL PARKING & TOLLS", "RENTAL PARKING TOLLS", "AUTO RENTAL, PARKING & TOLLS")
RplcAuto = "AUTO - RENTAL, PARKING & TOLLS"
        
FindMisc = Array("MISCELLANEOUS EXPENSE", "MISCELLANEOUS")
RplcMisc = "MISCELLANEOUS EXPENSE"
        
FindTraining = Array("TRAINING & SEMINARS", "TRAINING & SEMINARS-OTHERS")
RplcTraining = "TRAINING & SEMINARS"

这是我当前的代码。我只是一个“查找/替换数组”示例(但我确实需要替换所有数组):

Options Explicit
Sub Multi_FindReplace()

With wsPivotPreCCI
    Dim Lrow As Long
    Dim Rng As Range
    Dim FindTips As Variant
    Dim RplcTips As Variant
    Dim i As Long
    
    Lrow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set Rng = .Range("C2:C" & Lrow)
    
    FindTips = Array("TIPS TELEPHONE", "TIPS TELEPHONE OTHER", "TIPS, TELEPHONE", "TIPS,TELEPHONE")
    RplcTips = Array("TIPS, TELEPHONE, OTHER")
    
    'Loop through each item in array list

End With
End Sub

这些是我尝试使用的不同行,并在发生错误的行上注明了错误。

    For i = LBound(FindTips) To UBound(FindTips)
        Rng.Cells.Replace What:=FindTips(i), Replacement:=RplcTips(i)  '<-Subscript Out of Range
    Next i

    For i = LBound(FindTips) To UBound(FindTips)
        .Cells.Replace FindTips(i, 1), RplcTips(i, 1), xlWhole, xlByRows   '<-Subscript out of Range
    Next

    Dim arr As Variant
    For i = LBound(FindTips) To UBound(FindTips)
        For Each arr In Rng
            Rng.Cells.Replace What:=FindTips(i), Replacement:=RplcTips(i)  '<-Subscript out of Range
        Next arr
    Next i

    With Rng
        For i = LBound(FindTips) To UBound(FindTips)
            .Cells.Replace FindTips(i), RplcTips(i)  '<-Subscript out of Range
        Next
    End With

'Finally Looped through Column "C", but All the cells changed, and then received Subscript out of range
    For i = LBound(FindTips) To UBound(FindTips)
        For Each FindTips In Rng
            Rng.Cells.Replace What:=FindTips(i), Replacement:=RplcTips(i)
        Next FindTips
    Next i

在最后一次尝试之后,我发现了这篇文章:VBA(Microsoft Excel)用String替换Array

因此,我将的范围RplcTips调整ArrayString

Options Explicit
Sub Multi_FindReplace()

With wsPivotPreCCI
    Dim Lrow As Long
    Dim Rng As Range
    Dim FindTips As Variant
    Dim RplcTips As String
    Dim i As Long
    
    Lrow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set Rng = .Range("C2:C" & Lrow)
    
    FindTips = Array("TIPS TELEPHONE", "TIPS TELEPHONE OTHER", "TIPS, TELEPHONE", "TIPS,TELEPHONE")
    RplcTips = "TIPS, TELEPHONE, OTHER"
    
    'Loop through each item in array list
    For i = LBound(FindTips) To UBound(FindTips)
        For Each FindTips In Rng
            Rng.Cells.Replace FindTips(i), RplcTips
        Next FindTips
    Next i

End With
End Sub

这段代码仍然将每个单元格(在C列中)更改为该Rplctips值,并且似乎继续查找(直到我停止了宏)。

问题1:是否应使用替换值String代替Array

问题2:替换C列中所有这些值的最佳方法是什么?

大本钟

是的,替换值RplcTips应该是a,String因为您要处理的是一个值,而不是一组值。

然后,您无需遍历要替换的单元格。调用Replace整个范围。更改

For i = LBound(FindTips) To UBound(FindTips)
    For Each FindTips In Rng
        Rng.Cells.Replace FindTips(i), RplcTips
    Next FindTips
Next i

For i = LBound(FindTips) To UBound(FindTips)
    Rng.Replace FindTips(i), RplcTips, xlWhole, xlByColumns, True
Next i

有关Range.Replace参数的详细信息,请参阅文档。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在选定的单元格中查找并替换多个值

来自分类Dev

如何使用目标c在不同数组中的uitableview中获取选定的单元格值和未选定的单元格值

来自分类Dev

使用VBA查找/替换选定范围内具有零值的单元格(公式单元格)

来自分类Dev

如何使用MATLAB同时替换单元格数组中的多个子字符串

来自分类Dev

在MATLAB中的单元格数组中查找值(数组)

来自分类Dev

在matlab中的单元格数组中查找值(数组)

来自分类Dev

使用Datatables插件查找并替换单元格值

来自分类Dev

替换熊猫中单元格中的多个值

来自分类Dev

如果满足条件,则替换多个列中的单元格值(使用列中的值)

来自分类Dev

查找内容并替换为:MS Excel使用两列查找和替换单元格中的多个字符

来自分类Dev

如何在单元格的Excel文本值中查找和替换字符“ *”,而不是公式

来自分类Dev

使用VBA将OLEDB连接中的多个命令文本变量替换为单元格值

来自分类Dev

使用VBA将OLEDB连接中的多个命令文本变量替换为单元格值

来自分类Dev

如何从多个单元格中查找并选择一个值?

来自分类Dev

MS Excel:如何使用查找和替换在单元格中插入单词

来自分类Dev

如何根据某些条件替换数组中的单元格?

来自分类Dev

将值附加到单元格数组中的多个单元格

来自分类Dev

我如何用R中的多个列和行的每个单元格的平均值替换每个单元格的多个值

来自分类Dev

如何在Octave中将值分配给n维数组中的多个单元格

来自分类Dev

Matlab:在单元格中查找选定行中特定值的范围

来自分类Dev

使用单元格中的文本值查找包含公式的单元格的地址

来自分类Dev

如何使用C#从Excel文件中的不同单元格中查找相同的值

来自分类Dev

在单元格数组中查找负值

来自分类Dev

在MATLAB中替换单元格的值

来自分类Dev

搜索单元格值,然后使用它在单元格数组中查找另一个值

来自分类Dev

剑道网格更改多个选定单元格的值

来自分类Dev

jqGrid获取多个选定的行单元格值

来自分类Dev

剑道网格更改多个选定单元格的值

来自分类Dev

jqGrid获取多个选定的行单元格值

Related 相关文章

  1. 1

    在选定的单元格中查找并替换多个值

  2. 2

    如何使用目标c在不同数组中的uitableview中获取选定的单元格值和未选定的单元格值

  3. 3

    使用VBA查找/替换选定范围内具有零值的单元格(公式单元格)

  4. 4

    如何使用MATLAB同时替换单元格数组中的多个子字符串

  5. 5

    在MATLAB中的单元格数组中查找值(数组)

  6. 6

    在matlab中的单元格数组中查找值(数组)

  7. 7

    使用Datatables插件查找并替换单元格值

  8. 8

    替换熊猫中单元格中的多个值

  9. 9

    如果满足条件,则替换多个列中的单元格值(使用列中的值)

  10. 10

    查找内容并替换为:MS Excel使用两列查找和替换单元格中的多个字符

  11. 11

    如何在单元格的Excel文本值中查找和替换字符“ *”,而不是公式

  12. 12

    使用VBA将OLEDB连接中的多个命令文本变量替换为单元格值

  13. 13

    使用VBA将OLEDB连接中的多个命令文本变量替换为单元格值

  14. 14

    如何从多个单元格中查找并选择一个值?

  15. 15

    MS Excel:如何使用查找和替换在单元格中插入单词

  16. 16

    如何根据某些条件替换数组中的单元格?

  17. 17

    将值附加到单元格数组中的多个单元格

  18. 18

    我如何用R中的多个列和行的每个单元格的平均值替换每个单元格的多个值

  19. 19

    如何在Octave中将值分配给n维数组中的多个单元格

  20. 20

    Matlab:在单元格中查找选定行中特定值的范围

  21. 21

    使用单元格中的文本值查找包含公式的单元格的地址

  22. 22

    如何使用C#从Excel文件中的不同单元格中查找相同的值

  23. 23

    在单元格数组中查找负值

  24. 24

    在MATLAB中替换单元格的值

  25. 25

    搜索单元格值,然后使用它在单元格数组中查找另一个值

  26. 26

    剑道网格更改多个选定单元格的值

  27. 27

    jqGrid获取多个选定的行单元格值

  28. 28

    剑道网格更改多个选定单元格的值

  29. 29

    jqGrid获取多个选定的行单元格值

热门标签

归档