- ベストアンサー
Excel A1セル内からB1を検索→太字
Excel で次のような処理をしたいです。 A1のセルには、文章が入っています(例: "I love you so much." ) B1のセルには、単語が入っています(例: "love" ) B1のセルに単語を入れた時に、A1のセル内の文章中に含まれるB1の単語のみを 太字にしたいです。 どのような関数(?)を作成すればよいでしょうか?
- みんなの回答 (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
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
一部文字列の書式変換は関数では出来ません。 マクロで対応するか、A列の文字列をスペースでセル分割すれば、条件付き書式設定が 利用できると思いますのでご検討下さい。
お礼
関数で出来ず、マクロで対応できるのですね ためになります ありがとうございました
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 たいしたことはやってないので詳しい説明はしません。
お礼
ありがとうございます 実現できました
お礼
無事に成功しました ありがとうございます