固有名詞の変更(Microsoft Excel)
多くの人と同じように、カークは他の場所で作成されたExcelワークシートに情報をコピーします。 Kirkがコピーする情報は通常、すべてCAPSであり、Excelが「適切な大文字と小文字」と呼ぶものに変換したいと考えています(各単語の最初の文字のみが大文字になります)。問題は、変換を行うPROPERワークシート関数が、大文字になっている単語に注意を払わないことです。したがって、a、an、in、and、the、withなどの単語はすべて頭文字でキャップされます。カークはそれらの単語(そしておそらく他のいくつかの単語)を大文字にしたくありません。
この問題に取り組むにはいくつかの方法があります。 1つは、かなり長い式を使用して変換を行うことです。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a "); " An ";" an ");" In ";" in ");" And ";" and "); " The ";" the ");" With ";" with ")
これはすべて単一の式であることを忘れないでください。大文字と小文字の変換を行いますが、目的の小文字の単語(a、an、in、および、the、with)を置き換えます。これは比較的簡単ですが、置換を行う必要のある単語の数を増やすと、数式の有用性が制限されます。
おそらく、より良いアプローチは、ユーザー定義の関数マクロを使用して大文字と小文字を変換することです。次の関数は、最初の大文字を使用してはならないいくつかの一般的な単語をチェックし、それらが小文字であることを確認します。
Function MyProper(str As String) Dim vExclude Dim i As Integer vExclude = Array("a", "an", "in", "and", _ "the", "with", "is", "at") Application.Volatile str = StrConv(str, vbProperCase) For i = LBound(vExclude) To UBound(vExclude) str = Application.WorksheetFunction. _ Substitute(str, " " & _ StrConv(vExclude(i), vbProperCase) _ & " ", " " & vExclude(i) & " ") Next MyProper = str End Function
単語を配列に追加することができ、コードは自動的に追加を検知し、それらの追加された単語をチェックします。また、コードがチェックを行うときに、配列内の各単語の前後にスペースを追加することにも注意してください。これは、部分的な単語(「and」が「stand」内にあるなど)や文の先頭の単語に変更を加えるコードがないようにするためです。ワークシート内でこの関数を次のように使用できます。
=MyProper(B7)
この使用法は、B7の元のテキストを調整せずに、変更されたテキストを返します。
必要に応じて、ブック内の名前付き範囲から単語のリストを取得する関数を使用できます。次の関数は、MyListという名前のセルの範囲を使用し、セルごとに1つの単語を使用します。このリストは、WordListという名前のワークシートにあると想定しています。
Function ProperSpecial(cX As Range) ' rng = target Cell Dim c As Range Dim sTemp As String sTemp = Application.WorksheetFunction.Proper(cX.Value) For Each c In Worksheets("WordList").Range("MyList") sTemp = Application.WorksheetFunction.Substitute( _ sTemp, Application.WorksheetFunction.Proper( _ " " & c.Value & " "), (" " & c.Value & " ")) Next c ProperSpecial = sTemp End Function
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3467)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。