• ベストアンサー

エクセルで特定文字列の色つけ

例えば 「今日はとてもいい天気ですね」 という文字列がある場合、自動で“天気”という文字に任意の色が つくようにできるでしょうか? エクセル2007を使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

マクロを使うなら、こんな具合にします。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim h as range  dim pos as long  for each h in target   pos = instr(h.text, "天気")   do while pos > 0    h.characters(pos, len("天気")).font.colorindex = 3    pos = instr(pos + 1, h.text, "天気")   loop  next end sub ファイルメニューから終了してエクセルに戻る セルに「今日の天気は晴れの天気予報でした」などのように言葉を記入すると、自動で色が付く。 #既に記入済みの言葉があるときは、記入済みのセル範囲をコピーして、その場で貼り付ける。 #ただし 言わずもがなですが、文字列の途中に書式を施せるのは文字列を「生データ」で記入したときだけです。数式の計算結果などには一切そういう事はできません。

wait4u
質問者

お礼

ご回答ありがとうございました。 教えていただいたものが一番今回のものに適していました。 他の皆様方のもすごく助けになりました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 ↓の画像のようにSheet2に色を付けたい文字と文字色(B列を塗りつぶし)の表を作成しておきます。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim str As String Dim ws As Worksheet Set ws = Worksheets("Sheet2") Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To Len(Cells(i, 1)) str = Mid(Cells(i, 1), k, Len(ws.Cells(j, 1))) If str = ws.Cells(j, 1) Then Cells(i, 1).Characters(Start:=k, Length:=Len(ws.Cells(j, 1))).Font.Color = _ ws.Cells(j, 2).Interior.Color End If Next k Next j Next i Application.ScreenUpdating = True End Sub 'この行まで ※ マクロなので「自動で!」という訳にはいきません。 データ変更があるたびにマクロを実行する必要があります。 参考になりますかね?m(_ _)m

wait4u
質問者

お礼

ご回答ありがとうございました。考え付かないアイデアでした。

  • lisyaoran
  • ベストアンサー率50% (202/398)
回答No.2

VBAでマクロを作成することで出来ます。 Cells.Findで対象文字列を検索してセル移動し、Application.WorksheetFunction.Findでセル内の文字を検索し、戻り値がその文字列の開始位置になっているので、ActiveCell.Characters.(Start:=○○, Length:=○○).Fontのstartに入れて、検索文字列数をLengthに入れ、.Colorに自分の指定したい色を設定し、色を変えたら再度検索、という感じで実装は可能でしょうかね。 自分はVBAを使ってマクロを組んだことがないので、実際のソースコードは詳しい人におまかせ致します。

wait4u
質問者

お礼

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

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

いいえ。 エクセルの一般機能では、言葉の一部だけを自動で書式設定させる方法はありません。 自動機能で出来るのは、あくまでもセル丸ごとが対象になります。 「天気」を含む言葉が記入された、セル全体の色を塗るとか文字色を変えるのように。 もちろん、手動で数式バーの中で「天気」の文字を選んで文字色を付けることはできます。 またマクロを使い、手動で行った通りにマクロでやらせる事もできます。

関連するQ&A