Excel 比较两列,如果匹配,则用旁边的另一个单元格替换一列

Excel 比较两列,如果匹配,则用旁边的另一个单元格替换一列,excel,vba,Excel,Vba,我正在尝试向excel电子表格中的文本类别添加类别代码。我有一个a列,其中包含文本中的所有类别名称,包括重复项。我有B列和文本中的所有类别名称,不包括重复项,我有C列,其中类别代码不包括重复项。C列中的每个代码与其B列中的类别对齐 例如: 答: 家用电器 B: 农业工具 C: 051 051是农业工具的代码。我想获取A列中的字符串,在B列中搜索该字符串,然后用C中的代码替换A列中的字符串 是否可以使用VBA或excels内置函数执行此操作?如果A列包含包含重复项的类别名称列表,B和C列包含(相同

我正在尝试向excel电子表格中的文本类别添加类别代码。我有一个a列,其中包含文本中的所有类别名称,包括重复项。我有B列和文本中的所有类别名称,不包括重复项,我有C列,其中类别代码不包括重复项。C列中的每个代码与其B列中的类别对齐 例如:

答:
家用电器

B:
农业工具

C:
051

051是农业工具的代码。我想获取A列中的字符串,在B列中搜索该字符串,然后用C中的代码替换A列中的字符串


是否可以使用VBA或excels内置函数执行此操作?

如果A列包含包含重复项的类别名称列表,B和C列包含(相同)类别名称和没有重复项的类别ID(即“类别代码表”),则可以

  • 在D列中(或者最好在a和B之间插入一个新列)

  • 对于A中的每个条目,输入
    =VLOOKUP(Ax,$B$y:$C$z,2,FALSE)

据此

x=当前行数

y=类别代码表的起始行

z=“类别代码表”的结束行


将查找表的坐标设为绝对坐标,以防止在向下复制公式时更改y&z。

由于要替换列A中的值,请尝试使用此小宏:

Sub FixColumnA()
    Dim nA As Long, nB As Long, v As Variant
    Dim i As Long, j As Long
    nA = Cells(Rows.Count, "A").End(xlUp).Row
    nB = Cells(Rows.Count, "B").End(xlUp).Row
    For i = 1 To nA
        With Cells(i, "A")
            v = .Value
            For j = 1 To nB
                If v = Cells(j, "B").Value Then
                    .Value = Cells(j, "C").Value
                End If
            Next j
        End With
    Next i
End Sub

这可以通过使用VLOOKUP函数来实现。我尝试过使用VLOOKUP函数,但不适合我。你能给我举个函数的例子吗?谢谢你,汉克斯!成功了,但我必须在它前面放一个iError。谢谢你的解决方案,另一个成功了,所以我没有测试这个,但是谢谢你you@SmalliSax很乐意帮忙!