VBA(エクセルマクロ)

【VBA】分析に使える! セル内の特定文字列の色を変えて太文字にするエクセルマクロ

特定の文字列があれば、その文字を太文字にして色を付けるコード

エクセルで大量のデータを扱っているときに、特定の文字だけ目立たせたいということがあったときに使えるプロシージャを紹介します。

 

活用できるケースの例=アンケート分析

先に行っておくと、下記に提案する例以外の使い方もできるので、この利用方法に絞る必要はありません。

例えば、アンケートのデータについて意見を可視化しやすくするために、プラスの意味を持つ言葉(ポジティブワード」を赤くしたり、マイナスの意味を持つ言葉(ネガティブワード)を青くすることによって、それぞれの意見がどちらの意味を持つかどうかを見やすくすることができます。お客様のニーズのワードについては、緑にするというのもアリですね。

言葉には揺らぎがあるので、設定したワードに該当したとしても、必ずしも、正確ではないことに注意してください。

 

自分が分析のために文字色を変えるとしたら・・・。

ポジティブワードの設定例

例えば、ポジティブワードとして設定するのであれば、
助か助け」(助かる、助かった・助けくれた)(一部ニーズ(マイナス)=助けてほしかった)
ありが」(ありがたい、ありがとう)
喜ば喜び」{喜ばしい、喜ばしく、喜び
嬉し」(嬉しかった、嬉しい、嬉しく)
くれた」(やってくれた、助けてくれた、教えてくれた

など

ネガティブワードの設定例

ネガティブワードとして設定するのであれば、
ない」(来ない、届かない、連絡がない、ありえない
不満
馬鹿」(馬鹿にされた。馬鹿にするな、馬鹿野郎)
喜べ」(喜べない)
悪い

※場合によってはネガティブの否定=肯定の場合もあります。
例)不満はない
やってほしいことを頼んでいないのに、案内してくれた

 

ニーズワードの設定例

ニーズに対するワードとして設定するのであれば、

ほしい」(してほしい、)
ほしかった」(してほしかった
もらいたい」(してもらいたい、やってもらいたい
もっと

など

 

気を付けたいワードの例

言葉の前後の内容によって、プラス、マイナス、ニーズなどさまざまな意味にとれるワード

よかった」(ポジティブ=~してくれたからよかった、ネガティブ・ニーズ=~してくれたらよかった
希望」(ポジティブ=希望通りだった、ネガティブ=希望通りではない、ニーズ=希望する)

 

また、業態によっては、一般的なプラスマイナスが逆転することもありますので、注意してください。

例えば、「届かない」という言葉は、一般的には否定になります。
頼んだ書類が届かない。クーラーの  涼しい風が届かない。ホースが届かない。など

紫外線が届かない乳液。いたずら防止のために子供の手が届かない棚や柵。などはプラスの意味になりますね。

 

分析ワードはあくまでも例です

例を挙げましたが、必ずしもポジティブとしたワードがそのままの意味にとらえられないケースもあります。

設定には、ご自身の業態に合わせた内容をご検討ください。

 

実際の記述について

下記では、

A列に●、■、★、▼のいずれかがあれば、その文字を太文字且つ赤文字(ColerIndex=3)にする
という例で、コードの解説をします。

下記のコードの中で、|||の記号部分を、強調したいワードに置き換えてください。
正規表現を利用しているため、強調したいワードはで区切ることで、
●または■または★または▼という内容になります。

それさえわかれば強調したいワードを減らす、増やすことができますね。

また、文字の色については、Font.ColorIndex=33(赤)の部分を変えることにより、
赤以外に変えることができます。

他のカラーインデックスの例⇒ 黒=1 白=2 赤=3 緑=4 青=5 黄色=6

他の色にしたい場合は、Font.ColorIndexでググれば、出てきます。

 

 VBA
Sub 文字色変更_赤()
Dim re, mc, m, r As Range, endp As String
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.Pattern = "●|■|★|▼"
Set r = Range("A:A" ).Find("*")
If r Is Nothing Then End
endp = r.Address
Do
Set mc = re.Execute(r)
For Each m In mc
r.Characters _
(m.FirstIndex + 1,m.Length).Font.ColorIndex=3
r.Characters _
(m.FirstIndex + 1, m.Length).Font.Bold = True
Next
Set r = Range("A:AI" ).FindNext(r)
Loop Until r. Address = endp
Set re = Nothing
End Sub

 

 

コード自体は、上記を張り付けて編集するだけです。

このコードを分析に利用する際は、①どのようなワードを設定するか。②強調されたワードをどのように評価するかが重要です。

 

 

-VBA(エクセルマクロ)

Copyright© grantish , 2024 All Rights Reserved.