我有一个关键字列表,想计算EXCEL文件中每个单元格文本中匹配关键字的数量

时间:2019-02-05 08:05:11

标签: excel excel-formula

我在Excel文件中有2张纸。一个是字典工作表,第二个是包含一列文本的工作表。我想一一匹配字典关键字列,然后在文本列的每个单元格中计算匹配关键字的数量。

我尝试了以下公式: =(LEN(B2)-LEN(SUBSTITUTE(B2,Sheet1!A:A,“”))))/ LEN(Sheet1!A:A) 此B2中的text列是第一个(开始)单元格,Sheet1!A:A是其他工作表的字典列。 但这样我得到零

=(LEN(B2)-LEN(SUBSTITUTE(B2,Sheet1!A:A,“”)))/ LEN(Sheet1!A:A)

结果将如下所示:

         Text                      number_of_keyword_match    | number_of_keyword_match using DIC col 2 |  ........
                                        using DIC col 1

1 any Text or sentence/sentences          e.g match "3"             
2                                                    7              
3                                                    0              
4                                                    15             
5    .................................................                                   
7 .....................................................
.......................................................
..................................continue up to 2815 rows....

2 个答案:

答案 0 :(得分:1)

假设您的文本输入如下:

 |          A           |
-+----------------------+
1|apple apple beat beat |
2|apple beat beat carrot|
3|carrot apple apple    |

您的字典如下:

 |   A   |   B   |
-+-------+-------+
1|apple  |beat   |
2|beat   |carrot |
3|       |       |

此公式将为您提供每个单元格文本每个单词的计数

=(LEN(text!A1)-LEN(SUBSTITUTE(text!A1,dictionary!A1,"")))/LEN(dictionary!A1)

(在此示例中为2

如果我的理解正确,您的预期输出将是text工作表中的多余列,其中每个单元格包含dictionary中相应列中每个单词的计数总和,对吗?例如:

 |          A           | B | C |
-+----------------------+---+---+
1|apple apple beat beat | 4 | 2 |
2|apple beat beat carrot| 3 | 3 |
3|carrot apple apple    | 2 | 1 |

您可以使用array formulas进行此操作,从单元格B1中的该地址开始:

=SUM(IFERROR((LEN(text!$A1)-LEN(SUBSTITUTE(text!$A1;dictionary!A:A;"")))/LEN(dictionary!A:A);0))

但不要在粘贴后按Enter,而是按Ctrl+Shift+Enter将其作为数组公式运行。然后将该公式向下并向右拖动以获得所需的所有计数。

答案 1 :(得分:0)

我将以countif()为例:

HttpHeaders

假定您的列表从sheet1的A1单元格开始,而您的文本从sheet2的a1单元格开始。

enter image description here

要按照我的说明拖动公式,而又不移动数据范围,则需要:

 move_uploaded_file($file_tmp, "/full/path/to/images/".$file_name);

如果将$放在字母之前,则列不会移动。