代码之家  ›  专栏  ›  技术社区  ›  Yorgos

在B列中获取A列中不在字典中的单词`

  •  1
  • Yorgos  · 技术社区  · 15 年前

    我如何创建一个宏来检查A列的每个单元格,查找定义字典中没有的单词,并在下一个单元格中编写它们(用空格分隔)。在下面的图片中,您可以看到完成宏后的工作表示例。

    完整的想法是从数据库中获取(varchar)列,并使用Excel对其进行拼写检查。下一步是向负责的用户发送一封电子邮件,其中包含B列中至少包含一个单词的行(当然还有列ID)。我想我可以做剩下的工作,除了这一步得到错误的词语。如果你能想出另一个拼写检查数据库列的主意,如果你能和我分享它,我将不胜感激。谢谢。A列,找到定义字典中没有的单词,然后在下一个单元格中编写它们(用空格分隔)。在下面的图片中,您可以看到完成宏后的工作表示例。

    alt text

    完整的想法是从数据库中获取(varchar)列,并使用Excel对其进行拼写检查。下一步是向负责的用户发送一封电子邮件,其中包含B列中至少包含一个单词的行(当然还有列ID)。我想我可以做剩下的工作,除了这一步得到错误的词语。如果你能想出另一个拼写检查数据库列的主意,如果你能和我分享它,我将不胜感激。谢谢。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Luke    15 年前

    您可以使用vba调用内置的Office词典 应用程序.拼写检查

    这是语法:

    功能 检查拼写 ( 字串 , 自定义词典 ] 无用的情况 ))

    …下面是一个满足您需求的示例:

    Option Explicit
    
    Public Sub Checker()
    
    Dim s           As Variant
    Dim sArray      As Variant
    Dim lCurrRow    As Long
    Dim lStartRow   As Long
    Dim lEndRow     As Long
    
    lStartRow = 1
    lEndRow = 5
    
    Application.ScreenUpdating = False
    
    With ThisWorkbook.Worksheets(1)
        'Clear existing data in Column B
        Call .Columns(2).ClearContents
    
        For lCurrRow = lStartRow To lEndRow
    
            'Populate an Array, splitting the song title at the spaces
            sArray = Split(.Cells(lCurrRow, 1).Text, " ")
    
            'Loop through each word in the Array
            For Each s In sArray
                'Spell Check against the main MS Office dictionary
                If Not Application.CheckSpelling(s) Then
                    'this word is missing, output to Column B:
                    .Cells(lCurrRow, 2).Value = Trim(.Cells(lCurrRow, 2).Value & " " & s)
                End If
            Next s
    
        Next lCurrRow
    End With
    
    Application.ScreenUpdating = True
    
    End Sub
    
        2
  •  2
  •   Michel de Ruiter    15 年前

    不要这样做

    这是一个疯狂的想法。Excel是 这是正确的工具。

    这么说,也许是可行的。

    • 首先,你必须把“句子”分成单词。这可以使用vba在单独的工作表中完成。
    • 然后您可以使用countif或vlookup检查每个单词是否存在。例如,如果您有一个名为 dictionary 包含所有按字母顺序排列的有效单词(在第一列中),最有效的方法是 =IF(VLOOKUP(B2;dictionary!A:A;1)<>B2;B2;"") 一句话 B2 .
    • 然后您可以将每个句子的结果单元格连接起来,或者只找到第一个(再次使用vlookup,现在使用一个额外的参数 FALSE )

    但是…算了吧!

    推荐文章