使用多张工作表中的唯一标识符查找和替换列中的值

数据

背景:我有一个包含两张纸的文件(我们称它们为Sheet1Sheet2)。

在中Sheet1,我的A列具有唯一标识符,B列具有一些文本。

来自的样本数据Sheet1

A |

1 | 苹果

2 | 橙子

3 | 柠檬

4 | 胡椒

在中Sheet2,我的A列具有相同的唯一标识符,而B列则具有不同的文本。

来自的样本数据Sheet2

A |

1 | 你好

2 | 怎么样

3 |

4 |

问题:我想拥有一个vba代码,该代码一次从a列获取一个标识符,然后从中Sheet2找到它,Sheet1Sheet1用from中的文本覆盖(替换)其中的文本Sheet2

代码:我发现此代码部分对我有用,但不是用中的文本Sheet1替换A列中的标识符,而不是替换其中的B列中Sheet1的文本Sheet2

Sub multiFindandReplace()

Dim myList, myRange

Set myList = Sheets("Sheet2").Range("A2:B10")
'two column range with find/replace pairs
Set myRange = Sheets("Sheet1").Range("A2:B10")
'range to be searched and replace

For Each cel In myList.Columns(1).Cells
    myRange.Replace What:=cel.Value, Replacement:=cel.Offset(0, 1).Value, LookAt:=xlWhole
Next cel

End Sub

问题: 我知道为什么这样做,但是如何更改它以替换文本而不是标识符?基本上,我希望Sheet1最终看起来像Sheet2Sheet1具有更多的行Sheet2,因此行的顺序不同,并且并非所有行都需要更新(这就是为什么我需要“查找并替换”)的原因。理想情况下,每当更改B列中的单元格时,都将触发此代码。

我也欢迎其他代码想法或补充!

谢谢!

蒂姆·威廉姆斯

您可以用来Match在sheet1上找到相应的行:

Sub multiFindandReplace()

    Dim myList As Range, myRange As Range, rw As Range, m

    Set myList = Sheets("Sheet2").Range("A2:B10")
    Set myRange = Sheets("Sheet1").Range("A2:B10")

    For Each rw In myList.Rows
        'Find match on sheet1
        m = Application.Match(rw.Cells(1).Value, myRange.Columns(1), 0)
        If Not IsError(m) Then
            'Got a match: replace in ColB
            myRange.Cells(m, 2).Value = rw.Cells(2).Value
        End If
    Next rw

End Sub

编辑:如果从事件处理程序调用,则必须在进行任何工作表更新之前禁用事件,否则您将陷入无尽的循环中

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error Goto haveError
    If Not Intersect(Target, Range("$B$2:$B$10")) Is Nothing Then 
        Application.EnableEvents = False
        multiFindandReplace 'name of my macro 
        Application.EnableEvents = True
    End If 
    Exit Sub
haveError:
    Application.EnableEvents = True

End Sub

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用VBA在Access表中查找值而没有唯一标识符的情况

用唯一标识符替换所有列中的每个唯一值

用唯一标识符替换数组中的元素

根据熊猫中其他列的值添加具有唯一标识符的列

向R数据框中的同一列值添加唯一标识符

PostgreSQL-如何基于PSQL VIEW中的公共唯一标识符将NULL值替换为另一列中的值

使用非唯一标识符更新和选择FIFO队列中的MySQL表

使用唯一标识符,将行值与R中的列名匹配

如何使用R在缺少某些值的唯一标识符中添加缺失的零?

如何根据“标识符列”和熊猫数据框中的附加条件替换值?

如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

使用行值作为同一列中的值的标识符(数据争用)

在几列中查找唯一的一组标识符/组

使用自动筛选器在工作表的列中查找唯一值

Python Pandas:根据其他列中的唯一标识符创建具有最小值的新列

Oracle SQL-根据列中的值为结果集中的每一行赋予唯一标识符

根据可变条件和唯一标识符将一列中的堆叠数据转置为行

如何在元组中查找列表的唯一标识符?

使用唯一的列值对在数据框中生成二元标识符

根据JQuery中的唯一标识符获取表行信息

义务Cordapp中的唯一标识符

Tomcat中连接的唯一标识符

JavaScript中的唯一对象标识符

Python中是否有对象唯一标识符

iOS中的私有唯一设备标识符

在Python中制作唯一标识符

目标c中的唯一标识符(长整数)

SQL中唯一标识符出现的运行计数

在spark / scala中为重复值提供唯一标识符