Excelについての質問です。
例えば、
A1→【あい】うえお
A2→【あい】くけこ
A3→さ【あい】せそ
A4→たちつ【あい】
とあった場合、「【あい】」の部分のフォントのみ色を変えたいのですが、表が大きいので、なるべく一度(小回数)で行いたいと思っています。
ですが、
「編集」→「置換」を用い、
「検索する文字列」に「【あい】」と打ち、書式は変更せず、
「置換後の文字列」に「【あい】」と打ち、「書式」→「フォント」→「色」で変えたい色を指定し、
その他は変更せず、「すべて置換」で成功するかなと思いましたが、
そうすると、「【あい】」を含むセルの、セル内全ての文章の色が変わってしまうという結果になってしまいました。
どうにかして「【あい】」の部分だけの色変えをしたいのですが、どのようにすればよろしいでしょうか?お知恵をお貸し下さい。
ちなみにExcel2003を使っています。よろしくお願いします。
マクロを使用して、【】で囲まれた部分の色を変更する例です。
シートのタブを右クリックし、「コードの表示」を選択
右側の大きなウィンドウへ下記をコピーします。
(変更範囲や色を変える場合は赤い部分を編集してください。)
「ツール」⇒「マクロ」⇒「マクロ」から main を選んで実行すると、処理がされます。
Const STR_COLOR_RED = 3
Const STR_COLOR_BLUE = 5
Const STR_COLOR_PINK = 7
Const STR_COLOR_YELLOW = 27
'--------------------------------------------------------------
Sub main()
'--------------------------------------------------------------
' --- 範囲と色は適宜変更してください
setPartColor Range("A1:G20"), STR_COLOR_RED
End Sub
'--------------------------------------------------------------
Sub setPartColor(tableRange As Range, chColor As Integer)
'--------------------------------------------------------------
' tableRange 処理をする対象範囲
' chColor 着色をする色
'--------------------------------------------------------------
' 処理:【】で囲まれた範囲を指定した色で着色する
'--------------------------------------------------------------
Dim j%
Dim sLen%, sPos%, scLen%
Dim scPos%
Dim rg As Range
sPos = 1000
scPos = 1000
For Each rg In tableRange
sLen = Len(rg.Value)
For j = 1 To sLen
Select Case Mid(rg.Value, j, 1)
Case "【"
scPos = j
Case "】"
If scPos < j Then
rg.Characters(Start:=scPos, Length:=(j - scPos + 1)).Font.ColorIndex = chColor
scPos = 1000
End If
End Select
Next
Next
End Sub
Excel ファイルにマクロを残したくない場合は、先ほどのウィンドウを開き書き込んだマクロを消去すれば、元に戻ります。
wordもっていなかったらすみません・・・。
もしwordをお持ちでしたらいったんワードに貼り付けて
andy-kaidyさんが行った手順
「編集」→「置換」を用い、
「検索する文字列」に「【あい】」と打ち、書式は変更せず、
「置換後の文字列」に「【あい】」と打ち、「書式」→「フォント」→「色」で変えたい色を指定し、
その他は変更せず、「すべて置換」
を行い再度Excelに貼り付けると上手く行きます。
ただし、貼り付け時に書式が文字列ではなく
数値になってしまうようなデータだと
セル単位で色が変わってしまいます。
ご回答ありがとうございます。
wordで行うとは目からうろこでした!
色変更の置換成功しました。
ただ、そうしますと、1つ問題が出てきました。
書き忘れましたが、ほとんどのセルでセル内改行を行っていたので、いざWordからExcelに貼り付けた際、セル内の2行目以降が次のセルにそれぞれ移行してしまいました。
どうすればいいのでしょうか?
マクロを使用して、【】で囲まれた部分の色を変更する例です。
シートのタブを右クリックし、「コードの表示」を選択
右側の大きなウィンドウへ下記をコピーします。
(変更範囲や色を変える場合は赤い部分を編集してください。)
「ツール」⇒「マクロ」⇒「マクロ」から main を選んで実行すると、処理がされます。
Const STR_COLOR_RED = 3
Const STR_COLOR_BLUE = 5
Const STR_COLOR_PINK = 7
Const STR_COLOR_YELLOW = 27
'--------------------------------------------------------------
Sub main()
'--------------------------------------------------------------
' --- 範囲と色は適宜変更してください
setPartColor Range("A1:G20"), STR_COLOR_RED
End Sub
'--------------------------------------------------------------
Sub setPartColor(tableRange As Range, chColor As Integer)
'--------------------------------------------------------------
' tableRange 処理をする対象範囲
' chColor 着色をする色
'--------------------------------------------------------------
' 処理:【】で囲まれた範囲を指定した色で着色する
'--------------------------------------------------------------
Dim j%
Dim sLen%, sPos%, scLen%
Dim scPos%
Dim rg As Range
sPos = 1000
scPos = 1000
For Each rg In tableRange
sLen = Len(rg.Value)
For j = 1 To sLen
Select Case Mid(rg.Value, j, 1)
Case "【"
scPos = j
Case "】"
If scPos < j Then
rg.Characters(Start:=scPos, Length:=(j - scPos + 1)).Font.ColorIndex = chColor
scPos = 1000
End If
End Select
Next
Next
End Sub
Excel ファイルにマクロを残したくない場合は、先ほどのウィンドウを開き書き込んだマクロを消去すれば、元に戻ります。
ありがとうございます。一発でした!!!
マクロ、VBA早く覚えたいなとは思っていましたが・・・これから精進します。
ありがとうございます。一発でした!!!
マクロ、VBA早く覚えたいなとは思っていましたが・・・これから精進します。