在B列中获得“不在字典中”的A列的单词

我怎么能创build一个macros来检查列A的每个单元格,find不在定义字典中的单词,然后在下一个单元格中写入它们(以空格分隔)。 在下面的图片中,您可以看到macros完成后的工作表示例。

替代文字

完整的想法是从数据库中获取(varchar)列,并使用excel拼写检查它。 下一步是发送一封电子邮件给负责用户,其中包含B列中至less包含一个单词的行(当然还有列ID)。 我认为我可以做其余的工作,除了弄错字的这一步之外。 如果你能想出另一个想法来检查一个数据库列,我将不胜感激,如果你与我分享。 谢谢。

您可以使用VBA使用Application.CheckSpelling调用内置的Office字典

这是语法:

函数CheckSpellingWord作为string ,[ CustomDictionary ],[ IgnoreUppercase ])作为布尔值

…这是一个符合你要求的例子:

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 

不要这样做

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

话虽如此,也许是可行的。

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

但是…忘了它!