我在Excel中有两个工作表。一个包含排名:
:
另一场比赛(每日自动更新)
目的是在比赛旁边的两列中显示每个队伍的排名。其中一个问题是文本字符串不是完全匹配(webquery的限制)。
所以我需要找到一个公式,用于表示Rankings中的表格字符串与匹配项和中的团队的指定单元格大致匹配,然后显示Rank(排名第1列)它。
到目前为止,我已经在排名应该去的小区中得到了这个。
=VLOOKUP("*"&qry!B5&"*";Sheet1!A3:C369;1;0)
但它只会产生字符串" rank"来自Rankings的表头。
有什么想法吗?
答案 0 :(得分:2)
有几件事:
Vlookup将尝试在查找表的第一列中找到匹配项,并且可以从右侧的列返回值。您的查找表在第一列中具有所需的返回值,在第二列中具有查找值。因此,Vlookup在这种情况下不起作用。但是,您可以使用索引和匹配的组合。
查找值之前和之后的*通配符表示查找表中的值可以在查找值中已经包含文本之前和之后的任何文本。在您的情况下,查找值的文本比查找表中的文本多。所以通配符没有帮助。示例:您有“353 Virginia”,并且您希望在仅包含“Virginia”的列中找到它。在通配符中包装“353 Virginia”将不会添加任何值,因为您要匹配的文本实际上比您开始使用的文本短。您需要从查找值中删除内容,而不是添加通配符。
如果排名数据来自网络查询,您需要做一些工作来清理这些数据,因此它适合查找其他表格。
除了开头的数字之外,在某些单元格的末尾还有两个字符,我无法识别。在您进行查找之前,这些也需要被删除。
假设所有单元格在开头都包含三个数字和一个空格,您可以使用公式方法
=TRIM(MID(SUBSTITUTE(B5;" @#";"");5;99))
替换将删除尾随字符。我不知道它们到底是什么,一些网络相关的特殊字符,所以在这里练习我使用@#
而不是A的东西和雪佛龙。将您的一个单元格中的Web字符复制并粘贴到公式中。对于来自网络的数据,您可能还需要检查前导和尾随空格,不间断空格字符和其他不可见字符。
您可以使用“清理”公式作为查找的基础,或者,如果上面的公式充分清理数据,那么您可以在索引/匹配组合中使用它,如下所示:
=index(Sheet1!$A$3:$A$369,match(TRIM(MID(SUBSTITUTE(B5;" @#";"");5;99));Sheet1!$B$3:$B$369;0))
如果没有在电子表格中查看实际数据,很难判断公式清理是否足够。在查找返回所需的值之前,您可能需要做更多的工作。
如果数据来自网络,我强烈建议您将Power Query作为将数据从网络上传输到电子表格的工具。 Power Query是Excel 2010和2013的免费插件,并在Excl 2016中内置为“Get& Transform”。它可以连接到许多数据源,包括网页上的表,并且它具有非常强大的机制来清理数据以便进一步处理。设置并运行Power Query后,您只需刷新查询以从网站加载新数据。