在Excel VBA中根据字符值更改文本颜色

我有一个很多领域的Excel表,其中一列包括日本字符,这里是几行的抽样…

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

我想要所有的片假名字符以一种颜色显示,而平假名在另一种颜色中显示,如果可能的话,平假名字符在另一种颜色下显示。

例如…(コク,サイ,ザン,シ,ド)会变成绿色,而(きざ,つま,のこ,のこ,ゆび,さ,つと)会变成蓝色,而…(む,如果可能的话,将被着色为紫色,否则如同平假名的其余部分一样蓝色,如果不是的话。 至于逗号/短划线,我不会关注他们的颜色或是否删除等。

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

那么我将如何去自动化文本格式如图所示。 我认为VBA会很有必要。

如果您的数据位于第一个表格的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)。