【问题标题】:Compare each word in a list of word in excel with list of words - Java, VBA, Excel将excel中单词列表中的每个单词与单词列表进行比较 - Java,VBA,Excel
【发布时间】:2020-11-07 03:47:22
【问题描述】:

我在 excel 中有一个单元格,其中包含几个单词,用逗号分隔;例如。 单元格 A1 = {你好,你好吗,,今天}

然后我有另一个单元格,其中也包含几个单词,请参见以下示例

单元格 B3 = {你好,我,我,做,好,}

现在我想看看 A1 中的任何单词是否包含在 B3 中。所以我需要将列表元素相互比较。

这里两个单元格包含的单词是:A1 = B3 = {hello, you} 如果至少有一个单词匹配,则打印 1,否则打印 0。

您对如何解决这个问题有什么建议吗?使用 Excel 函数或 Java 都会很好。但感谢任何让我开始的建议或想法。

注意:A 和 B 的列表可能很长。因此手动操作是行不通的

【问题讨论】:

  • 你可以在java中使用APACHE POI。 (mkyong.com/java/…, howtodoinjava.com/library/…)
  • excel VLOOKUP中有查找功能。只需检查此以获取更多信息got-it.io/solutions/excel-chat/excel-tutorial/vlookup/…
  • @cool 感谢您的建议。但是 vlookup 期望每个单元格一个单词,这就是为什么它在我的情况下不起作用,因为一个单元格中有几个单词并且不允许将它们拆分为一个单元格一个单词
  • 您可以根据您的 excel 版本以多种方式拆分分隔字符串,并将每种方式用作搜索或查找条件。
  • 不确定是否可以使用公式,需要在 VBA 中进行。取 A1,Split 它,循环遍历部分数组,并使用 InStr 检查它们是否在 B3 中匹配

标签: java excel matching string-comparison fuzzy-comparison


【解决方案1】:

所以我确实找到了解决方案,尽管基于 excel 公式...

所以首先我分解了单元格 A1 中的单词并从中制作了一个参考表。所以每个单词都在一个单元格中。

然后我必须将基础数据转换为标准格式,以便我可以将数据与现有的参考表相匹配,例如。如果碰巧有一个单词是由两个单词组成的,请删除不必要的空格(例如,application performance --> applicationperformance)。我对 B 的参考表和单元格中的所有单词都这样做了。

在单元格 B 中,我在每个单词后插入了一个空格。所以包含的元素会像这样寻找 ex 单元格 B6 = {分析、人工智能、大数据、无人机、保险、保险科技、软件} 您会看到单词和逗号之间以及像 Software 这样的单词之后总是有一个空格。并且由两个(或更多)单词组成的术语被连接起来。

之后我可以使用公式

=IF(SUMPRODUCT( -- ISNUMBER(SEARCH($A$1:$A$10;$B6)))>0;1;0)

查找匹配项。

Example with formular

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 2012-11-07
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多