【问题标题】:Stripping Uppercase Words in Excel VBA在 Excel VBA 中去除大写单词
【发布时间】:2010-11-16 17:00:56
【问题描述】:

在 Excel VBA 中去除大写单词

我有一张这样的 Excel 表格:

甲乙 1 用于 FALCON 项目的内容版本系统 2 美国在 2008 年足球杯上击败英国 3 DARPA NET 的最大贡献是互联网 4 一个大问题是对非规范化数据的结构化查询语言查询

我想提取所有大写的单词并用它们生成一个列表:

甲乙 内容版本系统 1 猎鹰 1 美国 2 英国 2 DARPA 网络 3 结构化查询语言 4

我在想我可以检查“eachWord” == UCase(eachWord),但我不知道如何处理短语。我也不知道如何处理以“撇号 s”、“结束括号”或标点符号结尾的短语。

我一直在这样拆分单词: IndividualWordsArray = Split(ActiveSheet.Cells(workingRow, 2).Value)

但这只会创建一个基于空格字符的数组。我认为,如果除了空格之外,它还可以用这些字符分割,这可能会有所帮助:“ ( ) : ‘ , . ? ! ;经过一番搜索,我发现我可以用除空格以外的字符来分割一行,但一次只能用一个分隔符。

有人知道如何创建一个包含所有大写单词和短语的列表吗?

【问题讨论】:

    标签: excel split parsing vba


    【解决方案1】:

    一种简单的方法是复制文本,将所有分隔符替换为空格字符,然后使用空格作为分隔符进行拆分。

    【讨论】:

      【解决方案2】:

      这是一个丑陋的缓慢方式,但它确实有效(除了它不会从 NET 返回 NET)。我只是遍历单词数组并测试每个字母的大写字母。 Option Compare Binary 语句至关重要。

      Option Explicit
      Option Compare Binary
      
      Sub x()
          Dim IndividualWordsArray() As String, keeperArray() As String
          Dim i As Integer, j As Integer, k As Integer
          Dim allCaps As Boolean
      
          IndividualWordsArray = Split(ActiveCell)
          k = 0
          For i = 0 To UBound(IndividualWordsArray)
              allCaps = True
              For j = 1 To Len(IndividualWordsArray(i))
                  If Not Mid(IndividualWordsArray(i), j, 1) Like "[A-Z]" Then
                      allCaps = False
                      Exit For
                  End If
              Next j
              If allCaps Then
                  ReDim Preserve keeperArray(k)
                  keeperArray(k) = IndividualWordsArray(i)
                  Debug.Print keeperArray(k)
                  k = k + 1
              End If
          Next i
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多