【问题标题】:VBA Excel : Lookup mutiple values & return matched value to the next cellVBA Excel:查找多个值并将匹配的值返回到下一个单元格
【发布时间】:2011-12-16 13:47:09
【问题描述】:

这个问题对应这个链接VBA Excel : Extract data in specific format from CSV files

但我这里有一个不同的问题。

在 CVS 文件中,在 col C 中充满了有关 Windows XP、Adobe、Office、.net Framework、vlc 等应用软件的信息。所以,在 col C 我周围 > 1800 行。

如果有匹配项,我想在每个列单元格或整个列中查找 Windows XP、Adobe、IBM、VLC 等,然后将匹配值粘贴到下一列单元格中。

例如,如果找到“Adobe”,则将“Adobe”粘贴到下一个 col 单元格。

我如何使用ìfLookup 执行,或者有什么最好的方法吗??

if(FIND("Adobe",C:C),"TRUE","FALSE")

=Lookup(Windows XP, C:C) would return "Windows XP" =Lookup(Adobe, C:C) would return "Adobe" =Lookup(IBM, C:C) would return "IBM "

我已经把 CVS 文件上传到这里了!!

http://uploadmb.com/freeuploadservice.php?uploadmbID=1324042163&srv=www&filename=5200.csv

【问题讨论】:

  • 你为什么不在你的列表上做一个数据透视表?
  • @iDevlop:正如您在文件中看到的那样,col C 有一个列表(我猜,当我点击过滤器时,我可以看到该列表)。我该如何执行,如果找到匹配的查找文本,请将其粘贴到下一个单元格中。

标签: excel vba cell lookup paste


【解决方案1】:

您可以使用 D 列中的公式来检查“Windows XP”或您要查找的任何数据:

=IF(ISERROR(FIND("Windows XP",C2)),"","Windows XP")

杰西

【讨论】:

  • 你能再解释一下吗,我是 VBA 的新手。请举个例子。谢谢你。
  • 把它拆开,FIND("Windows XP",C2) 检查单元格 C2 的内容是否有文本“Windows XP”,并返回它找到的结果的起始位置。如果它没有找到它,它会返回一个错误(#VALUE!)。如果是错误,ISERROR 返回 true。 IF 检查 TRUE 并返回第一个参数,否则返回第二个。
  • 把它们放在一起,它会检查文本,如果没有找到文本,则返回 TRUE,处理 IF 以返回文本或不返回任何内容。
【解决方案2】:
Sub AddFormula()
    Dim lLR As Long
    lLR = Range("A" & Rows.Count).End(xlUp).Row
    Range("D2").FormulaArray = "=INDEX($E$2:$E$15,MATCH(1,--ISNUMBER(SEARCH($E$2:$E$15,$C2,1)),0),1)"
    Range("D2").AutoFill Destination:=Range("D2:D" & lLR)

这个公式代码可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多