Excelを使用してテキストを含むセルのグループを分析している場合は、大文字を含むセルの数、小文字を含む数、および大文字と小文字が混在する数を判別することをお勧めします。

このタスクに取り組む方法は2つあります。通常のワークシート式を使用する方法と、独自のユーザー定義関数を定義する方法です。

評価するテキストがセルA1から始まる列Aにある場合は、セルB1で次の数式を使用できます。

=IF(A1>"",IF(EXACT(UPPER(A1),A1),"Upper", IF(EXACT(LOWER(A1),A1),"Lower","Mixed")),"")

数式は、A1に何かがあるかどうかを確認します。存在する場合は、EXACT関数を使用して、内容をセルの内容のさまざまな変換と比較します。セルA1が空の場合、または単語Upper、Lower、Mixedの場合、数式は空の文字列を返します。

必要な範囲で数式を列Bにコピーすると、次の種類の数式を使用してカウントを決定できます。

=COUNTIF(B:B,"Upper")

小文字または大文字と小文字が混在するセルの数を確認するには、「Upper」を「Lower」または「Mixed」に置き換えます。

明らかに、この方法で数式を使用するには、ワークシートに列を追加する必要があります。この方法で中間カラムを使用しない、使用できる別の数式アプローチがあります。

大文字のみを含むA1:A100の範囲のセルの数を返す次の数式について考えてみます。

=SUMPRODUCT(--(EXACT(A1:A100,UPPER(A1:A100))),--(A1:A100<>""))

この数式のバリエーションを使用して、小文字のセルの数を返すことができます。以下で変更されるのは、UPPER関数の代わりにLOWER関数を使用することだけです。

=SUMPRODUCT(--(EXACT(A1:A100,LOWER(A1:A100))),--(A1:A100<>""))

大文字と小文字が混在するセルを判別するには、SUMPRODUCTベースの2つの数式を組み合わせて作成する必要があります。

=SUMPRODUCT(--(NOT(EXACT(A1:A100,UPPER(A1:A100)))),-- (NOT(EXACT(A1:A100,LOWER(A1:A100)))),--(A1:A100<>""))

これらの式にはいくつかの欠点がありますが、以前の式では明らかではありませんでした。まず、セルに数値が含まれている場合、これらの数式はセルを大文字としてカウントします。次に、セルにエラー値が含まれている場合、数式はエラーを返します。

ケースを頻繁にカウントする必要がある場合は、カウントを行うユーザー定義関数を作成する方がよいでしょう。このような関数を作成する方法はたくさんありますが、一般的なガイドラインは次のとおりです。

範囲の各セルをステップスルーするセルが大文字、小文字、または大文字と小文字が混在しているかどうかを判別するカウンターをインクリメントする値を返す

次のマクロは、上記を実装する方法の一例です。

Function CountCase(rng As Range, sCase As String) As Long     Dim vValue     Dim lUpper As Long     Dim lMixed As Long     Dim lLower As Long     Dim rCell As Range     lUpper = 0     lLower = 0     lMixed = 0

For Each rCell In rng         If Not IsError(rCell.Value) Then             vValue = rCell.Value             If VarType(vValue) = vbString _                 And Trim(vValue) <> "" Then                 If vValue = UCase(vValue) Then                     lUpper = lUpper + 1                 ElseIf vValue = LCase(vValue) Then                     lLower = lLower + 1                 Else                     lMixed = lMixed + 1                 End If             End If         End If     Next     Select Case UCase(sCase)

Case "U"

CountCase = lUpper         Case "L"

CountCase = lLower         Case "M"

CountCase = lMixed         Case Else             CountCase = CVErr(xlErrValue)

End Select End Function

セルが大文字、小文字、混合のいずれであるかを判断することは、明らかにこのようなマクロの核心です。このような決定を行うには、ワークシートの数式で行われたのと同じプロセスを使用します。セルの内容を、それらの内容の大文字または小文字の変換と比較します。このマクロでは、セルの値(vValue)が、UCase関数またはLCase関数のいずれかで変換されたvValueと比較されます。

この関数は、評価する意味がないセルも無視します。

数値、ブール値、エラー値、空のセル、およびスペースのみを含むセルを含むセルは無視されます。数値がテキストとしてフォーマットされている場合、関数はそのセルを大文字としてカウントします。このユーザー定義関数を使用するには、ワークシートで次のような式を使用します。

=COUNTCASE(A1:A100, "L")

最初の引数には、評価する範囲を使用します。 2番目の引数は、返されるカウントを示す1文字(L、M、またはU)です。 2番目の引数に他の値を使用すると、関数はエラーを返します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3212)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。