【Excel】PROPER関数で英語名が崩れる時の対処法とコツ

PROPER関数で英語の氏名が「McDonald」のように崩れる時の対処法

ITの初心者

Excelで「PROPER関数」を使ったら、英語の氏名が「McDonald」のように崩れてしまいました。どうすれば良いのでしょうか?

IT・PC専門家

「PROPER関数」は単語の最初の文字を大文字にする関数ですが、接頭辞や接尾辞の大文字化には対応していません。そのため、「McDonald」のような名前が正しく表示されないことがあります。対処法としては、手動で修正するか、他の関数を組み合わせて使うことが考えられます。

ITの初心者

他にどんな関数を使えば良いのですか?

IT・PC専門家

例えば、「SUBSTITUTE関数」を使って特定の文字列を手動で修正することができます。また、VBAを使用することで、より自動化された修正も可能です。

PROPER関数の基本と問題点

「PROPER関数」は、Excelで文字列の各単語の最初の文字を大文字にし、残りを小文字にする関数です。この関数を使用することで、英語の氏名やタイトルなどを整形することができます。しかし、特に英語の名前では、接頭辞や特定の単語の大文字化に関して問題が生じることがあります。たとえば、「McDonald」や「O’Connor」のような名前が正しく表示されないことが多いのです。これは、「PROPER関数」がこれらの特別な文字列の処理に対応していないためです。

PROPER関数の使い方

「PROPER関数」の基本的な使い方は以下の通りです。
“`excel
=PROPER(文字列)
“`
ここで「文字列」には、大文字にしたいテキストを指定します。例えば、セルA1に「john smith」と入力されている場合、以下のように入力することで「John Smith」と表示されます。
“`excel
=PROPER(A1)
“`

「PROPER関数」で発生する具体的な問題

多くのユーザーが直面するのは、特定の文字列が期待通りに変換されないことです。たとえば、「McDonald」が「Mcdonald」と変わってしまうといったケースです。このような場合、PROPER関数は小文字の「c」を大文字に変換することができません。これは、Excelが単語を分割する際に、アポストロフィや特定の文字を正しく認識できないためです。

接頭辞や接尾辞の問題

英語の名前には多くの接頭辞(例: Mc, O’)や接尾辞(例: van, de)があります。これらは特別なルールに従って大文字にする必要がありますが、PROPER関数はそのルールを適用しません。たとえば、「McDonald」を「Mcdonald」と変換すると、正確性が失われます。

対処法

このような問題を解決するための方法はいくつかあります。以下に代表的な方法を紹介します。

1. 手動修正

最も簡単な方法は、PROPER関数を使用した後に手動で修正することです。しかし、大量のデータがある場合、これは非常に手間がかかります。

2. SUBSTITUTE関数を使用する

「SUBSTITUTE関数」を使うことで、特定の文字列を他の文字列に置き換えることができます。以下の例を見てみましょう。
“`excel
=SUBSTITUTE(PROPER(A1), “Mcdonald”, “McDonald”)
“`
このようにすることで、PROPER関数で得られた結果をさらに修正できます。

3. VBAを利用する

ExcelのVBA(Visual Basic for Applications)を使用して、より高度な変換を行うことも可能です。VBAを使えば、特定の接頭辞や接尾辞を正しく大文字化するプログラムを作成できます。以下は簡単な例です。
“`vba
Function ProperCase(Name As String) As String
Dim Parts() As String
Dim i As Integer
Parts = Split(Name, ” “)
For i = LBound(Parts) To UBound(Parts)
If InStr(Parts(i), “Mc”) = 1 Then
Parts(i) = “Mc” & UCase(Mid(Parts(i), 3, 1)) & LCase(Mid(Parts(i), 4))
ElseIf InStr(Parts(i), “O'”) = 1 Then
Parts(i) = “O'” & UCase(Mid(Parts(i), 3, 1)) & LCase(Mid(Parts(i), 4))
Else
Parts(i) = Application.WorksheetFunction.Proper(Parts(i))
End If
Next i
ProperCase = Join(Parts, ” “)
End Function
“`
この関数を使うことで、より正確に名前を整形できます。

まとめ

「PROPER関数」は、Excelで文字列を整形するための便利なツールですが、特定の名前に関しては限界があります。接頭辞や接尾辞を含む名前が正しく表示されない場合は、手動修正、SUBSTITUTE関数、またはVBAを使用して対策を講じることが重要です。これらの方法を活用することで、より正確なデータ管理が可能になります。

タイトルとURLをコピーしました