匹配来自不同列的部分单元格值并复制

时间:2017-11-02 07:02:08

标签: excel vba excel-vba

我正在尝试对同一工作簿中2个不同工作表中的2列进行部分比较。

例如:Sheet2' Column B包含Rs ID(所有数字),Column A包含Clinical Significance,在Sheet1中有2列A }& B(包含字符串和数字)以及相同的标题。

如果 Sheet2 Column B Sheet1 Column B存在部分匹配,我会希望我的VBA代码复制该单元格在Column A Sheet2 到{strong> Sheet1 的Column A中的同一个单元格。

Sheet 1中

sheet1

Sheet 2中

sheet2

这是我的代码。它运行完美,但它似乎无法捕获任何数据,因为 sheet2 中的Column BColumn A不完全相同。可能是我错误地使用了lookat:=xlPart吗?

Sub test()
    Dim rng2 As Range, c2 As Range, cfind As Range
    Dim x, y
    With Worksheets("sheet1")
        Set rng2 = .Range(.Range("B2"), .Range("B2").End(xlDown))
        For Each c2 In rng2
            x = c2.Value
            With Worksheets("sheet2").Columns("B:B")
                On Error Resume Next
                Set cfind = .Cells.Find(what:=x, lookat:=xlPart, LookIn:=xlValues)
                If (Not (cfind Is Nothing)) Then
                    y = cfind.Offset(0, -1).Value
                    c2.Offset(0, -1) = y
                End If
            End With
        Next c2
    End With
End Sub

1 个答案:

答案 0 :(得分:0)

你(我相信)正在寻找第一张纸的价值,在第二张纸内,而它应该是另一种方式; - )。

试试这个,对我有用你提供的数据。我使用的方法略有不同,但总体思路保持不变。

var select = document.getElementById("animalList");  

for(var i=0;i<=animals.length;i++)
{
  select.options[i] = new Option(animals[i].name,animals[i].code);  
}

它总是循环遍历rng2中的所有值!因此,如果在rng2中的多个单元格中找到c1的值,那么它会用最新的find覆盖上一个匹配!