Excel 在另一张工作表的表格中搜索列中的单词,并将其旁边单元格中的值插入当前单元格

Excel 在另一张工作表的表格中搜索列中的单词,并将其旁边单元格中的值插入当前单元格,excel,vba,Excel,Vba,我想: 逐行查看一列(工作列a),在另一张工作表的表(列表列a)中搜索任何单词 如果找到这些单词中的任何一个,请从下一列(列出列b)返回值,并将其放入工作表的单元格(工作列c) 我知道if-then-else公式被列为7项,我正在处理一个比这个更长的列表(并且还在增长)。一个示例,用于替换所有工作表中定义的范围内的所有表达式: Sub ReplaceMulti() Dim dictionary As Range, sh As Worksheet, data(), r&, sear

我想:

  • 逐行查看一列(工作列a),在另一张工作表的表(列表列a)中搜索任何单词

  • 如果找到这些单词中的任何一个,请从下一列(列出列b)返回值,并将其放入工作表的单元格(工作列c)


我知道if-then-else公式被列为7项,我正在处理一个比这个更长的列表(并且还在增长)。

一个示例,用于替换所有工作表中定义的范围内的所有表达式:

Sub ReplaceMulti()
  Dim dictionary As Range, sh As Worksheet, data(), r&, search$, replace$

  ' Loads a translation table from a worksheet
  ' The first column is the searched string and the second is the replacement
  Set dictionary = [Sheet1!A1:B10]
  data = dictionary.value

  ' iterate each sheet
  For Each sh In ActiveWorkbook.Worksheets

    ' skip the sheet with the dictionary
    If sh.CodeName <> dictionary.Worksheet.CodeName Then

      ' iterate each expression
      For r = 1 To UBound(data)

        If Not IsEmpty(data(r, 1)) Then
          search = data(r, 1)
          replace = data(r, 2)

          ' replace in the sheet
          sh.Cells.replace What:=search, replacement:=replace, _
            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
            SearchFormat:=False, ReplaceFormat:=False

        End If
      Next
    End If
  Next
End Sub
Sub-ReplaceMulti()
Dim dictionary作为范围,sh作为工作表,data(),r&,search$,replace$
'从工作表加载翻译表
'第一列是搜索的字符串,第二列是替换字符串
Set dictionary=[Sheet1!A1:B10]
data=dictionary.value
'迭代每个工作表
对于ActiveWorkbook.工作表中的每个sh
“用字典跳过表格
如果是sh.CodeName dictionary.Worksheet.CodeName,则
'迭代每个表达式
对于r=1至uBond(数据)
如果不是空的(数据(r,1)),那么
搜索=数据(r,1)
替换=数据(r,2)
'在表中替换
sh.Cells.replace What:=搜索,替换:=替换_
LookAt:=xlPart,SearchOrder:=xlByRows,MatchCase:=False_
SearchFormat:=False,ReplaceFormat:=False
如果结束
下一个
如果结束
下一个
端接头

在所有工作表中替换范围内定义的所有表达式的示例:

Sub ReplaceMulti()
  Dim dictionary As Range, sh As Worksheet, data(), r&, search$, replace$

  ' Loads a translation table from a worksheet
  ' The first column is the searched string and the second is the replacement
  Set dictionary = [Sheet1!A1:B10]
  data = dictionary.value

  ' iterate each sheet
  For Each sh In ActiveWorkbook.Worksheets

    ' skip the sheet with the dictionary
    If sh.CodeName <> dictionary.Worksheet.CodeName Then

      ' iterate each expression
      For r = 1 To UBound(data)

        If Not IsEmpty(data(r, 1)) Then
          search = data(r, 1)
          replace = data(r, 2)

          ' replace in the sheet
          sh.Cells.replace What:=search, replacement:=replace, _
            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
            SearchFormat:=False, ReplaceFormat:=False

        End If
      Next
    End If
  Next
End Sub
Sub-ReplaceMulti()
Dim dictionary作为范围,sh作为工作表,data(),r&,search$,replace$
'从工作表加载翻译表
'第一列是搜索的字符串,第二列是替换字符串
Set dictionary=[Sheet1!A1:B10]
data=dictionary.value
'迭代每个工作表
对于ActiveWorkbook.工作表中的每个sh
“用字典跳过表格
如果是sh.CodeName dictionary.Worksheet.CodeName,则
'迭代每个表达式
对于r=1至uBond(数据)
如果不是空的(数据(r,1)),那么
搜索=数据(r,1)
替换=数据(r,2)
'在表中替换
sh.Cells.replace What:=搜索,替换:=替换_
LookAt:=xlPart,SearchOrder:=xlByRows,MatchCase:=False_
SearchFormat:=False,ReplaceFormat:=False
如果结束
下一个
如果结束
下一个
端接头

在我看来,您甚至可以使用普通的VLOOKUP或INDEX/MATCH函数来实现这一点。但是如果你真的想使用VBA,那么请发布你迄今为止所写的代码,并解释你在代码中遇到的错误或问题。在我看来,你甚至可以通过一个普通的VLOOKUP或索引/匹配函数来实现这一点。但是,如果你真的想用VBA来做,那么请发布你到目前为止所写的代码,并解释你在代码中遇到的错误或问题。因此,我不确定我做得是否正确,让我再澄清一点:我在看一份开支报告,其中有3列我在看,E列,G列,这三个词中的任何一个都可能包含我正在寻找的关键词。这是在一个名为“工作”的工作表中,我正在搜索的关键字在一个名为“跟踪”的工作表的a列中。我希望它逐行查看这3列中的关键字,如果找到了,就把关键字放在工作表J列的那一行的单元格中,如果没有,就把Unknown放在单元格中。很抱歉,对于VBA,我是个新手。因此,我不确定我是否做得对,让我再澄清一点:我正在查看一份费用报告,其中有3列我在查看,即E列、G列和H列。这3列中的任何一列都可能包含我要查找的关键字。这是在一个名为“工作”的工作表中,我正在搜索的关键字在一个名为“跟踪”的工作表的a列中。我希望它逐行查看这3列中的关键字,如果找到了,就把关键字放在工作表J列的那一行的单元格中,如果没有,就把Unknown放在单元格中。很抱歉,对于VBA,我是个新手。