【Excel】

Excelについての質問です。

例えば、
A1→【あい】うえお
A2→【あい】くけこ
A3→さ【あい】せそ
A4→たちつ【あい】
とあった場合、「【あい】」の部分のフォントのみ色を変えたいのですが、表が大きいので、なるべく一度(小回数)で行いたいと思っています。

ですが、
「編集」→「置換」を用い、
「検索する文字列」に「【あい】」と打ち、書式は変更せず、
「置換後の文字列」に「【あい】」と打ち、「書式」→「フォント」→「色」で変えたい色を指定し、
その他は変更せず、「すべて置換」で成功するかなと思いましたが、
そうすると、「【あい】」を含むセルの、セル内全ての文章の色が変わってしまうという結果になってしまいました。

どうにかして「【あい】」の部分だけの色変えをしたいのですが、どのようにすればよろしいでしょうか?お知恵をお貸し下さい。
ちなみにExcel2003を使っています。よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2006/12/19 16:05:12
  • 終了:2006/12/19 22:08:24

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912006/12/19 20:15:13

ポイント150pt

マクロを使用して、【】で囲まれた部分の色を変更する例です。

シートのタブを右クリックし、「コードの表示」を選択

右側の大きなウィンドウへ下記をコピーします。

(変更範囲や色を変える場合は赤い部分を編集してください。)

「ツール」⇒「マクロ」⇒「マクロ」から 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 ファイルにマクロを残したくない場合は、先ほどのウィンドウを開き書き込んだマクロを消去すれば、元に戻ります。

id:andy-kaidy

ありがとうございます。一発でした!!!

マクロ、VBA早く覚えたいなとは思っていましたが・・・これから精進します。

2006/12/19 22:04:12

その他の回答(1件)

id:tikirou No.1

tikirou回答回数80ベストアンサー獲得回数82006/12/19 17:11:23

ポイント50pt

wordもっていなかったらすみません・・・。


もしwordをお持ちでしたらいったんワードに貼り付けて

andy-kaidyさんが行った手順


「編集」→「置換」を用い、

「検索する文字列」に「【あい】」と打ち、書式は変更せず、

「置換後の文字列」に「【あい】」と打ち、「書式」→「フォント」→「色」で変えたい色を指定し、

その他は変更せず、「すべて置換」


を行い再度Excelに貼り付けると上手く行きます。


ただし、貼り付け時に書式が文字列ではなく

数値になってしまうようなデータだと

セル単位で色が変わってしまいます。

id:andy-kaidy

ご回答ありがとうございます。

wordで行うとは目からうろこでした!

色変更の置換成功しました。

ただ、そうしますと、1つ問題が出てきました。

書き忘れましたが、ほとんどのセルでセル内改行を行っていたので、いざWordからExcelに貼り付けた際、セル内の2行目以降が次のセルにそれぞれ移行してしまいました。

どうすればいいのでしょうか?

2006/12/19 19:01:05
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912006/12/19 20:15:13ここでベストアンサー

ポイント150pt

マクロを使用して、【】で囲まれた部分の色を変更する例です。

シートのタブを右クリックし、「コードの表示」を選択

右側の大きなウィンドウへ下記をコピーします。

(変更範囲や色を変える場合は赤い部分を編集してください。)

「ツール」⇒「マクロ」⇒「マクロ」から 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 ファイルにマクロを残したくない場合は、先ほどのウィンドウを開き書き込んだマクロを消去すれば、元に戻ります。

id:andy-kaidy

ありがとうございます。一発でした!!!

マクロ、VBA早く覚えたいなとは思っていましたが・・・これから精進します。

2006/12/19 22:04:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません