中を見ていただき、ありがとうございます。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
基準日以前のデータを範囲を指...
-
文字列を比較し、相違するフォ...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセル関数について
-
【Excel】数式の参照範囲を可変...
-
VBA 配列で型がエラーになります。
-
Excelで並び替え後にア行...
-
複数回答のクロス集計の方法
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
マクロで行の高さを設定したい
-
エクセル2010 マクロ複数行検索...
-
エクセルの時刻のカウントが出...
-
EXCELで日付を比べ3か月以内の...
-
行の一番右のデータセルと同じ...
-
excel / ピポッド 日数を出したい
-
急ぎ!色のついたセルを非表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
基準日以前のデータを範囲を指...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
Excelで並び替え後にア行...
-
急ぎ!色のついたセルを非表示...
-
エクセルの時刻のカウントが出...
-
【Excel VBA】指定した行の最大...
-
時間の重複チェック
-
エクセル関数について
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
Excel 最小二乗法 二次関数
-
文字列を比較し、相違するフォ...
-
EXCEL 最終行のデータを他のセ...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル 複数行ある同一商品...
-
VBA 複数行の検索及び抽出
-
エクセル関数のSUMPRODUCTにつ...
おすすめ情報