0

我有一个包含许多字段的 Excel 表,其中一列包含日文字符,这里是几行的示例......

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

我希望所有片假名字符都以一种颜色显示,而平假名则以另一种颜色显示,如果可能的话,平假名字符在破折号之后以另一种颜色显示。

例如... (コク, サイ, ザン, シ, ド) 将涂成绿色,而 (きざ, つま, のこ, のこ, ゆび, さ, つと) 将涂成蓝色,并且.. (む,る, す, す, す, める) 如果可能的话会被染成紫色,否则就像平假名的其他部分一样是蓝色。至于逗号/破折号..我不关心它们的颜色或是否删除等。

注意:虽然列出的每一行(单元格)都以片假名开头并以平假名结尾,但在我的全部数据范围内并不总是如此,因为有时平假名会排在第一位,或者..它将是不包括平假名的一行或片假名。

那么我将如何去自动化显示的文本格式..?我认为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 回答