人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Excel】
Excelについての質問です。

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

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

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

●質問者: andy-kaidy
●カテゴリ:コンピュータ 学習・教育
✍キーワード:A1 A3 Excel あい セル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tikirou
●50ポイント

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


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

andy-kaidyさんが行った手順


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

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

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

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


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


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

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

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

◎質問者からの返答

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

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

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

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

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

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


2 ● Mook
●150ポイント ベストアンサー

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

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

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

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

「ツール」⇒「マクロ」⇒「マクロ」から 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早く覚えたいなとは思っていましたが・・・これから精進します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ