0

1 つの列に日本語の文字が含まれる多数のフィールドの Excel シートがあります。ここでは、いくつかの行のサンプルを示します...

コク, きざむ
サイ, つまザン, のこる
, のこす<br> シ, ゆび, さーす<br> ド, つとめる

すべてのカタカナ文字を 1 つの色で表示し、ひらがなを別の色で表示し、可能であれば、ダッシュに続くひらがな文字をさらに別の色で表示したいと考えています。

たとえば... (コク、サイ、ザン、シ、ド) は緑色に、(きざ、つま、のこ、のこ、ゆび、さ、つと) は青色に、.. (む、る、す、す、す、る) は、可能であれば紫に、そうでなければ他のひらがなと同じように青にします。コンマ/ダッシュについては..それらの色や削除されているかどうかなどについては気にしていません.

注: リストされている各行 (セル) はカタカナで始まり、ひらがなで終わりますが、ひらがなが最初になることもあれば、ひらがなを除いた行になることもあるため、これは私のデータの全範囲内で常に当てはまるとは限りません。またはカタカナ。

では、示されているようにテキストの書式設定を自動化するにはどうすればよいでしょうか..? VBAは必須だと思います。

4

1 に答える 1

2

データが最初のシートの A1:A5 にある場合に必要なことを行うコードを次に示します。

Option Explicit

Sub ColorJapanese()
    Dim sheet As Excel.Worksheet
    Set sheet = ThisWorkbook.Sheets(1)

    Dim range As Excel.range
    Set range = sheet.range(sheet.Cells(1, 1), sheet.Cells(5, 1))

    Dim cell As Excel.range
    Dim font As Excel.font
    Dim i&, value&
    Dim dashFound As Boolean
    For Each cell In range
        dashFound = False
        For i = 1 To cell.Characters.Count
            Set font = cell.Characters(i, 1).font
            value = AscW(cell.Characters(i, 1).Text)
            If IsHirangana(value) Then
                If dashFound Then
                    font.Color = RGB(255, 0, 255)
                Else
                    font.Color = RGB(0, 0, 255)
                End If
            ElseIf IsKatakana(value) Then
                font.Color = RGB(0, 255, 0)
            ElseIf value = AscW("-") Then
                dashFound = True
            Else
                dashFound = False
            End If
        Next
    Next
End Sub

Function IsHirangana(value&) As Boolean
    If value >= CInt("&H" & "3041") And value <= CInt("&H" & "3094") Then
        IsHirangana = True
    Else
        IsHirangana = False
    End If
End Function

Function IsKatakana(value&) As Boolean
    If value >= CInt("&H" & "30A1") And value <= CInt("&H" & "30FB") Then
        IsKatakana = True
    Else
        IsKatakana = False
    End If
End Function

次回は、これまでの成果と苦労した点を示します。ここにいる人々は、あなたのためにコードを書くことはありません (彼らが昼休みに退屈していない限り:p)。

于 2013-09-19T11:56:45.807 に答える