在Excel VBA中删除大写单词
我有一张像这样的Excel表格:
A B 1 Used CONTENT VERSION SYSTEM for the FALCON Project 2 USA beats UK at Soccer Cup 2008 3 DARPA NET’s biggest contribution was the internet 4 One big problem is STRUCTURED QUERY LANGUAGE queries on non-normalized data
我想提取大写中的所有单词并使用它们生成一个列表:
A B CONTENT VERSION SYSTEM 1 FALCON 1 USA 2 UK 2 DARPA NET 3 STRUCTURED QUERY LANGUAGE 4
我在想我可以检查“eachWord”== UCase(eachWord),但我不知道如何处理短语。我也不知道如何处理以“撇号”,“末端括号”或标点符号结尾的短语。
我一直在分裂这样的话:
IndividualWordsArray = Split(ActiveSheet.Cells(workingRow, 2).Value)
但这只是基于空间字符的数组。我认为如果除了空格之外,它还可以通过这些字符分开:“():',. ? ! ;经过一些搜索,我发现我可以通过除空格之外的字符分割一行,但一次只能分隔一个分隔符。
任何人都知道如何创建一个包含所有大写单词和短语的列表?
答案 0 :(得分:1)
一种简单的方法是获取文本的副本,用空格字符替换所有分隔符,然后使用空格作为分隔符进行拆分。
答案 1 :(得分:0)
这是一种丑陋的慢速方式,但它确实有效(除了它不会从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