Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 计算单元格中某一范围内的字数_Excel - Fatal编程技术网

Excel 计算单元格中某一范围内的字数

Excel 计算单元格中某一范围内的字数,excel,Excel,在一个专栏中,我有一些短语,例如花生酱果冻时间。我需要知道在一个范围内(例如B:B)有多少单词出现在每个短语中。知道哪些词在这个范围内是很棒的。案子不重要 理想情况下,输出如下所示: 短语------------------NumOfWords------------------Words 花生酱果冻时间-----------------2-----------------黄油,时间 韦恩的世界-------------------1--------------------世界 我尝试过各种公式

在一个专栏中,我有一些短语,例如
花生酱果冻时间
。我需要知道在一个范围内(例如B:B)有多少单词出现在每个短语中。知道哪些词在这个范围内是很棒的。案子不重要

理想情况下,输出如下所示:

短语------------------NumOfWords------------------Words

花生酱果冻时间-----------------2-----------------黄油,时间

韦恩的世界-------------------1--------------------世界

我尝试过各种公式,包括数组和非数组,以及一些自定义项


我更喜欢非VBA解决方案,因为我还是个新手,但非常感谢您的帮助。

尝试以下用户定义函数(UDF):

空格填充用于避免单词的匹配部分

用户定义函数(UDF)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除UDF,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要使用Excel中的自定义项,请执行以下操作:

    =字计数器(A1,C1)

    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:

    必须启用宏才能工作

    你的例子是:


    要查找的单词数量有限制吗?如果是这样,解决方案(丑陋,但避免VBA)是使用右侧的隐藏列检查是否找到Sheet2中的每个单词,B1只需将这些单词相加即可。

    对于可能的非VBA解决方案,请尝试以下操作:

    • 短语在A列
    • WordList是一个
      命名范围
      ,其中包含一个单字列表,您需要确定这些单字是否位于a列特定单元格中的短语中
    有关匹配字数,请尝试以下公式:

    编辑:编辑公式以消除部分匹配

    B2:   =SUMPRODUCT(--ISNUMBER(SEARCH(" " & WordList & " "," " & A2 & " ")))
    
    对于单个匹配的单词,请尝试使用此
    数组输入的
    公式。(若要
    数组输入公式,请在点击
    enter
    时按住
    ctrl+shift
    确认公式。如果操作正确,Excel将在公式周围放置大括号
    {…}

    C2:   =IFERROR(INDEX(" " & WordList & " ",SMALL(ISNUMBER(SEARCH(" " & WordList & " "," " & $A2 & " "))*ROW(WordList),COLUMNS($A:A)+SUM(--NOT(ISNUMBER(SEARCH(" " & WordList & " "," " & $A2 & " ")))))),"")
    
    然后选择C2并向右填充至少与要返回的单词数量相同的单元格,或者直到公式返回空格。然后选择刚刚填充的单元格,并根据需要填充

    笔记
    • C2和rightward中的公式仅在范围单词列表以第1行的第一个单词开始时有效(可以在任何工作表的任何列中,但需要以第1行开始)。如果它从不同的行开始,则需要相应地调整
      行(单词列表)
      部分

    • 如果需要区分大小写的匹配,请用上述公式中的“查找”替换“搜索”

    这是使用上述公式得出的结果:


    你确定要非VBA吗?这在VBA中很容易做到!我对你想要什么有点困惑。你想知道短语中出现的单词数吗?所以花生酱果冻时间将返回4。或者你想知道短语中出现的单词列中出现的单词数吗?这相当于我想知道的是,如果我有一个单词列表,例如(黄油、时间、世界、青蛙、笔记本电脑),每个短语中出现了多少个单词,以及哪些单词。如果你能在VBA中实现它,那真是太棒了——只是不知道我是否有实现它的专业知识。如果这个词出现两次,应该算作2??不,一次就够了。谢谢,但这是不可能的。我没有尝试计数C1中的单词-我尝试计数另一张纸上某个范围内的单词(例如“Sheet2”B2:B245)。我尝试命名该范围,但仍然没有成功。当我尝试=WordCount(A1234,“Sheet2”B2:B245)或=WordCount(A1234,列表)时,我得到一个值错误。C1应该是A1中出现的“Sheet2”B2:B245中的单词。希望有意义…@AngelDesjarlais我明天会解决这个问题。嗨,Ron-谢谢你的公式!你的第一个几乎就到了,但不完全到了。我搜索的列表的问题是它可能包含与单元格的部分匹配,例如,它可能是“黄油,巴特,时间,蒂姆”“等等,我需要知道有多少精确匹配。你有办法解决这个问题吗?谢谢
    C2:   =IFERROR(INDEX(" " & WordList & " ",SMALL(ISNUMBER(SEARCH(" " & WordList & " "," " & $A2 & " "))*ROW(WordList),COLUMNS($A:A)+SUM(--NOT(ISNUMBER(SEARCH(" " & WordList & " "," " & $A2 & " ")))))),"")