• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007 文にリスト中の文字があれば表示)

Excel2007でリスト中の特定の文字を表示する方法を知りたい

このQ&Aのポイント
  • Excel2007のA列には日付を含む文章が入っており、C列には日付が入っています。A列の文章にC列の日付がある場合、その日付をB列に表示したいです。FIND関数だけでは対応できないため、他の方法を探しています。
  • Excel2007で、A列に含まれる文章から、C列の日付を抜き出してB列に表示したいです。FIND関数による単純な検索では対応できないため、別の方法を探しています。
  • Excel2007のA列には日付を含む文章があります。C列には日付が入っているので、A列の文章からC列の日付を抜き出してB列に表示したいです。FIND関数ではうまくいかず、別の方法を模索しています。

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

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

こんばんは! No.1さんの補足を読ませていただくと、関数でやるとなるとかなり難しいと思います。 そこでお望みでないマクロになってしまいますが 一例です。 データはA・C列とも1行目からあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, k As Long, M As Long Dim str1 As String, str2 As String Columns(2).ClearContents For k = 1 To Cells(Rows.Count, 3).End(xlUp).Row str1 = WorksheetFunction.Text(Cells(k, 3), "yyyy/m") For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For M = 1 To Len(Cells(i, 1)) str2 = Mid(Cells(i, 1), M, Len(str1)) If str2 = str1 Then Cells(i, 2) = str2 End If Next M Next i Next k End Sub 'この行まで ※ 関数でないので、データ変更があっても反映されません。 データ変更があるたびにマクロを実行する必要があります。 関数で簡単にできる方法があればごめんなさいね。m(_ _)m

Caryo_t
質問者

お礼

ご回答ありがとうございます! マクロにお詳しいんですね。大変勉強になりました。 どうしても関数で実現できない場合、こちらを使わせて頂きます。 多くのお時間をいただき、本当にありがとうございます。

その他の回答 (2)

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

No.2です! たびたびごめんなさい。 前回のコードではB列はシリアル値ではありません。 質問内に >その日付だけをB列のセルに抜き出す・・・ とありますので、B列はC列のシリアル値そのものを表示しなければならないのだと思います。 前回のコードは削除して、↓のコードに変更してください。 Sub test() 'この行から Dim i As Long, k As Long, M As Long Dim str1 As String, str2 As String Columns(2).ClearContents For k = 1 To Cells(Rows.Count, 3).End(xlUp).Row str1 = WorksheetFunction.Text(Cells(k, 3), "yyyy/m") For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For M = 1 To Len(Cells(i, 1)) str2 = Mid(Cells(i, 1), M, Len(str1)) If str2 = str1 Then With Cells(i, 2) .Value = Cells(k, 3) .NumberFormatLocal = "yyyy/m" End With End If Next M Next i Next k End Sub 'この行まで ※ これでC列のシリアル値(表示形式は "yyyy/m")のデータがB列に表示されると思います。 何度も失礼しました。m(_ _)m 

Caryo_t
質問者

お礼

何度も推敲していただき、ありがとうございます。 もう少しだけ締め切りを延長させてください。

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

>Aに入っている文章にCの日付がある場合、その日付だけをB列のセルに抜き出すというものです。  ⇒こんな感じでしょうか。   =IF(ISNUMBER(FIND(TEXT(C1,"yyyy/m"),A1)),C1,"")

Caryo_t
質問者

お礼

ご回答ありがとうございます。 このような方法もあるのですね。大変勉強になりました。 誤解を受ける文面でしたが、C列にはC1に1995/1があり、その後C120 の2005/1まで、120の日付が入っています。 ご回答案では、C1と対応しているかどうかしか見ることができませんので、残念ながらうまくいきませんでした。 ただ、この方法は応用が効くかもしれないと思い、今まで苦闘しておりました。 お礼が遅くなり、申し訳ございませんでした。

関連するQ&A