中を見ていただき、ありがとうございます。
Excel2007を使い、以下の機能を「VBAを使わず」実装したいと考えています。
まずA列の各セルには、日付(2007/12のような形式)を含む文章が入っているものとします。
またC列の各セルには、日付(2007/12のような形式)が入っているものとします。
やりたいことは、Aに入っている文章にCの日付がある場合、その日付だけをB列のセルに抜き出すというものです。
たとえば、A1のセルに「今月はよく働いた(2007/4)」があれば、B1に「2007/4」を表示したいです。
日付部分以外にもスラッシュやカッコが出てきますので、FIND関数では対応できない気がいたします。また、VLOOKUPとROWとワイルドカードを組み合わせてみたのですが、力及びませんでした。
そこで、以上の機能を実装する方法をご存知の方がおられましたら、お知恵をお貸しください。
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
ご回答ありがとうございます!
マクロにお詳しいんですね。大変勉強になりました。
どうしても関数で実現できない場合、こちらを使わせて頂きます。
多くのお時間をいただき、本当にありがとうございます。
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
No.1
- 回答日時:
>Aに入っている文章にCの日付がある場合、その日付だけをB列のセルに抜き出すというものです。
⇒こんな感じでしょうか。
=IF(ISNUMBER(FIND(TEXT(C1,"yyyy/m"),A1)),C1,"")
ご回答ありがとうございます。
このような方法もあるのですね。大変勉強になりました。
誤解を受ける文面でしたが、C列にはC1に1995/1があり、その後C120 の2005/1まで、120の日付が入っています。
ご回答案では、C1と対応しているかどうかしか見ることができませんので、残念ながらうまくいきませんでした。
ただ、この方法は応用が効くかもしれないと思い、今まで苦闘しておりました。
お礼が遅くなり、申し訳ございませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
平均変化率の信頼区間
-
エクセルで行の高さ及び列幅の...
-
急ぎ!色のついたセルを非表示...
-
エクセル関数のSUMPRODUCTにつ...
-
エクセルの時刻のカウントが出...
-
Excelで複数列のデータを1列に...
-
【Excel VBA】指定した行の最大...
-
EXCELで一個飛びに足す関数は?
-
【Excel】指定した文字列の行を...
-
EXCELの行列検索をおこなう関数
-
複数列の条件抽出したCOUNT
-
Excelで入力した氏名をあいうえ...
-
Excel VBA オートフィルター 期...
-
エクセルのマクロで別のシート...
-
EXCELで日付を比べ3か月以内の...
-
エクセル 1つのせるから3つ...
-
Excelで,一覧表シートから必要...
-
スペック足りてるのにゲームが...
-
エクセルで円グラフに引き出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
平均変化率の信頼区間
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
時間の重複チェック
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
列と行の名前(重複あり)が交...
おすすめ情報