アプリ版:「スタンプのみでお礼する」機能のリリースについて

大変お世話になっております。
Excelについてです。
C列に、行ごとに各々異なる「言葉」の記載があり、B列に、行ごとに各々異なる2~8フレーズ程の「文章」が入力されております。
B列の「文章」のうち、対応する行のC列の「言葉」が含まれている一文のみ色付けをしたいのですが、数式や効率的な方法を教えて頂けるととても有難いです。
例えば、セルC5に「レモンの」と記載があります。セルB5に「今、季節は夏です。私は果物のうち、桃とブドウが好きです。レモンは美味しいが酸っぱいです。ですので、レモンのジュースを飲んでいます。」と記載があれば「ですので、レモンのジュースを飲んでいます。」のみ赤く色付けをしたいです。
800から1,000セル程、作業が必要なため大変困っております。
お知恵を頂けるとと本当に助かります。VBAは作成したことはないのですが、興味があります。
お時間を頂き大変申し訳ございませんが、ご回答をお待ちしております。
どうぞ宜しくお願い申し上げます。

「ある言葉が含まれている一つの文(フレーズ」の質問画像

A 回答 (2件)

こんばんは。



1.[ALT]+[F11] などの操作で Visual Basic Editor を起動
2.[挿入]-[標準モジュール]
3.以下のソースコードをコピー&ペースト
4.添付いただいたワークシートをアクティブに
5.マクロを実行

'↓以下ソースコード

Sub B列の文字列をC列のキーワードでハイライト()

  Dim min_rownum As Long
  Dim max_rownum As Long
  
  min_rownum = 5
  max_rownum = Cells(Rows.Count, "B").End(xlUp).Row
  
  Dim i As Long
  For i = min_rownum To max_rownum
    '
    Dim src_text As String: src_text = Cells(i, "B").Text
    Dim chk_text As String: chk_text = Cells(i, "C").Text
    '
    If Len(src_text) > 0 And Len(chk_text) > 0 Then
      '
      Dim lines As Variant: lines = Split(src_text, "。")
      Dim j   As Long
      For j = 0 To UBound(lines)
        If InStr(1, lines(j), chk_text) > 0 Then
          Dim s_pos As Long: s_pos = InStr(1, src_text, lines(j))
          Cells(i, "B").Characters(Start:=s_pos, Length:=Len(lines(j))) _
                 .Font.Color = vbRed
        End If
      Next
      '
    End If
    '
  Next

End Sub
    • good
    • 0
この回答へのお礼

大変お世話になっております。
変更が出来ました…!
ご親切を頂きまして、心より感謝申し上げます!
お時間を頂戴致しまして、申し訳ございませんでした。
また何かありましたら、是非宜しくお願い致します…!
この度は本当に有難うございました!

お礼日時:2022/07/30 06:20

すみません。

最後の句読点を赤字にするの忘れてました。
#1のうち下記の部分を差し替えて下さい。

Cells(i, "B").Characters(Start:=s_pos, Length:=Len(lines(j)) + 1) _
.Font.Color = vbRed

「+1」というのが増えてます。では。
    • good
    • 0
この回答へのお礼

ご回答を頂きまして有難うございました。
差し替えを致しました…!
句読点が赤字に変わりました!
この度は本当に有難うございました…!

お礼日時:2022/07/30 06:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!