Excel 使用工作表中的两个值从另一个工作表中的表中筛选和返回值

Excel 使用工作表中的两个值从另一个工作表中的表中筛选和返回值,excel,vba,Excel,Vba,我对编码相当陌生,在过去的几个小时里我一直在谷歌上搜索,试图解决这个问题,但这似乎有点超出了我的能力范围,所以我非常感谢您的帮助 在Sheet1中,我有一个表,表中的列在M-CV(175个列)之间。对于每一列,我在第3行有一个“ID number”值。从第6行到表的末尾,我在CV列中有几个用逗号分隔的“搜索项” 在表2中,对应的“ID号”位于B列。A列包含字符串 对于sheet1中的每个ID号值,我要查找sheet2中的所有对应单元格,其中B列中的ID号相同,sheet2的A列至少包含CV列中的

我对编码相当陌生,在过去的几个小时里我一直在谷歌上搜索,试图解决这个问题,但这似乎有点超出了我的能力范围,所以我非常感谢您的帮助

在Sheet1中,我有一个表,表中的列在M-CV(175个列)之间。对于每一列,我在第3行有一个“ID number”值。从第6行到表的末尾,我在CV列中有几个用逗号分隔的“搜索项”

在表2中,对应的“ID号”位于B列。A列包含字符串

对于sheet1中的每个ID号值,我要查找sheet2中的所有对应单元格,其中B列中的ID号相同,sheet2的A列至少包含CV列中的一个“搜索项”

对于每个ID号,我希望将sheet2的A列中的条目与上述条件相匹配,并将它们粘贴到Sheet1中相应列的第5行中

我已经绕了好几圈试图做这件事,但我回到了第一步,没有代码显示

我尝试研究了自动过滤函数和for循环。我所做的研究表明,对于大型数据集,for循环的运行速度相当慢

我希望找到一个尽可能容易阅读和理解的解决方案

我希望我已经提供了足够的信息让每个人都能理解和帮助


提前谢谢你

我的Excel订阅已经过期,我已经开始在我的大部分电子表格工作中使用Google Sheets,所以我在那里进行了测试。可能需要进行一些转换。我是用公式做的,不是VBA,也不确定这是否会改变你的情况

如果我理解正确,您有两个带有共享键列的工作表,工作表1包含跨多个列的搜索词,工作表2包含在单个列中以逗号分隔的搜索词

  • 通过此设置,我们希望使用键将表2的搜索词列放入表1的正确行中。我在表中创建了一个命名范围,其中包含表2中的所有数据,并将其命名为“dst”。我的公式是
    =VLOOKUP(A2,dst,7,true)
    ,因为我在表1中的键位于A列,dst是我正在搜索的范围,我的带分隔搜索词的列是与dst相关的第7列,我按键对表2排序。我根据需要将这个公式相对地粘贴到所有行上
  • 我们希望使用我们的搜索词在工作表1的多个列中构造一个正则表达式字符串,并将其放入一个单元格中。我在第1页上使用了
    =JOIN(“|”,B2:E2)
    ,因为我的搜索词在B:E列中,这就产生了一个正则表达式,对我来说是这样的:
    alligator | dog | rabbit | lizard
    ,其中alligator、dog、rabbit和lizard都是该行中的搜索词。根据需要粘贴相对位置
  • 我们希望对包含逗号分隔的搜索词的搜索目标单元格运行正则表达式。我运行了
    =REGEXMATCH(F2,G2)
    ,其中F2是来自第2页的分隔搜索词,G2是我为该行构造的正则表达式。根据需要粘贴相对位置
  • 我完成的工作表1的屏幕截图:


    一旦您知道哪些单元格匹配,您就可以做任何您想做的事情。

    是否可以为我们制作一个示例数据集?可能有4列和几行?确保使用示例数据也显示预期的输出。一旦找到所需的逻辑/代码,就可以推断出更大的问题。我并没有完全按照你们的要求去做——至少还不足以提供一个有效的解决方案。有时,要想把描述形象化需要付出努力,所以(下次)床单上的图片可能会有助于回答这个问题。作为一个建议,不要试图在一个小时内做所有的事情。我将使用for循环和if语句检查Sheet1第3行上是否存在某些内容,如果工作正常,那么我将尝试将Sheet2与所有这些信息合并。。。一种方法是:1)将CV列上的数据拆分为以下列,以包含您将搜索的所有单词。2)如果它们只是少数,则应该考虑使用条件公式<代码> =(CV3=“Word1”,“执行这个”,如果(CV3=“Word2”,…))3)< /C>匹配,这取决于是否有匹配或只有一个匹配。