• ベストアンサー

Excel A1セル内からB1を検索→太字

Excel で次のような処理をしたいです。 A1のセルには、文章が入っています(例: "I love you so much." ) B1のセルには、単語が入っています(例: "love" ) B1のセルに単語を入れた時に、A1のセル内の文章中に含まれるB1の単語のみを 太字にしたいです。 どのような関数(?)を作成すればよいでしょうか?

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

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

こんにちは! Excelでセル内の特定文字だけ色付け・太字等々の編集は数式バー内で編集可能ですが、 一つずつの手作業になってしまいます。 VBAでは可能です。 そこでVBAでの一例です。 質問文に >B1のセルに単語を入れた時に、A1のセル内の・・・ とありますので、B列セルに入力があった場合のコードです。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、 ↓のコードをコピー&ペーストしてB列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i, k As Long Dim str As String If Target.Column = 2 And Selection.Count = 1 Then i = Target.Row For k = 1 To Len(Cells(i, 1)) str = Mid(Cells(i, 1), k, Len(Target)) If str = Target Then Cells(i, 1).Characters(Start:=k, Length:=Len(Target)).Font.Bold = True End If Next k End If End Sub 'この行まで お役に立てばよいのですが・・・m(__)m

heiseiniju
質問者

お礼

無事に成功しました ありがとうございます

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一部文字列の書式変換は関数では出来ません。 マクロで対応するか、A列の文字列をスペースでセル分割すれば、条件付き書式設定が 利用できると思いますのでご検討下さい。

heiseiniju
質問者

お礼

関数で出来ず、マクロで対応できるのですね ためになります ありがとうございました

noname#158634
noname#158634
回答No.1

A1、B1にただの値しか入れない以上、関数では無理です。 以下、正直やっつけですがマクロです。そのシートのタブを右クリック→「コードの表示」で出てくるVBAエディタにこれを貼り付けてください。以降、そのシートで変更が起きるたびにマクロが走ります。 Private Sub Worksheet_Change(ByVal Target As Range)  [A1].Font.Bold = False  tVal = [A1].Value  sVal = [B1].Value  For i = 1 To Len(tVal)   pos = InStr(i, UCase(tVal), UCase(sVal))   If pos > 0 Then    [A1].Characters(pos, Len(sVal)).Font.Bold = True   End If  Next End Sub たいしたことはやってないので詳しい説明はしません。

heiseiniju
質問者

お礼

ありがとうございます 実現できました