2009-08-04 21 views
0

私はこのような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)

しかし、唯一の空白文字に基づいて配列を作ることを。スペースに加えて、これらの文字で分割することもできると思った。 "(): '、。 ? ! ;いくつかの検索の後、スペース以外の文字で行を分割することができますが、一度に1つの区切り文字しか分割できません。

誰でも大文字の単語やフレーズを含むリストを作成する方法はありますか?

答えて

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 
関連する問題