質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

631閲覧

【Excel】関数について

Mr.sijimi

総合スコア21

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/11/24 05:59

編集2020/11/24 23:54

Excelで下記の表があります。
日付Aの日にちが日付Bの中に含まれているのかを調べるのが目標です。

表1

日付A比較結果-日付B
120/11/20TRUE2020/11/20 火 14:30:30
220/11/21FALSE2020/11/23 火 14:30:30
320/11/22FALSE2020/11/24 火 14:30:30
4...etc

※前提条件:各セルの値(日付)や書式は変更不可

単純な比較だけの数式は下記のように書けました。

=EXACT((日付A.1行),IF(COUNTIF((日付B.1行:4行),(日付A.1行)),日付A.1行,FALSE))

しかし、日付のみを比較する場合に単一セルの場合にはMID関数やDATE関数などを使って指定箇所を省いて比較をすればいいのですが、今回のように指定範囲から探して比較したい場合にどのように書けばいいのかがわかりません。

わかる方がいましたら教えてください。

###追記(11/25)
一度は解決しましたが、関連の内容にて不明点が浮上したためこちらにて追記させていただきます。

表1の日付Bでは[YYYY/MM/DD 曜日 HH:MM:SS]の形式にて入力されていましたが表2の日付Bのデータでは[YYYYMMDDHHMM]となっています。

表2

日付A-日付B
120/11/20202011201430
220/11/21202011231430
320/11/22202011241430
4...etc

そのため日付Aの”/”が不要となるので解決した数式を下記のように変更しました。

=IFERROR(IF(MATCH("*"&SUBSTITUTE(日付A.1行,"/","")&"*",日付B.1行:4行,0),TRUE),FALSE)

しかし、結果はFALSEとなってしまいます。
数式の検証機能を使い調べてみると、MATCH関数の1つ目の引数でN/Aエラーが発生している状況でした。
MATCH関数の中でSUBSTITUTE関数を使うのはNGなのでしょうか?
改めて教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

Excel(Professional Plus2016)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kikukiku

2020/11/24 06:11

すでに提示している「単純な比較だけの数式」が 目的を達成しているように読み取れるのですが、 何が実現できていないのですか?
Mr.sijimi

2020/11/24 06:20

kikukiku様 提示のコードだと比較する際、下記のような比較にとなってしまいます。 ①日付1(YY/MM/DD):日付2(YYYY/MM/DD 曜日 HH:MM:SS) 今回の場合、下記の条件(AND)での比較となります。 ①時間を取り除いた日付、 ②日付の形式を「YYYY/MM/DD」ではなく「YY/MM/DD」で比較 となっております。 現状の自身の知識では解決に至らず質問させていただきました。
kikukiku

2020/11/25 00:22

追記(11/25)の件です。 こちらで動作させてみましたが問題なく動作しています。 ここに記述されていない別の要因かと思います。
kikukiku

2020/11/25 00:44

日付Aが「20/11/20」で日付Bが「202012201120」だった場合、 このままでのMATCH条件だと、上記日付Bの後半にマッチしてしますように思います。 マッチ条件を「20201120*」にし、先頭からマッチする方針にした方が良いかもです。
Mr.sijimi

2020/11/25 00:44

kikukiku様 問題なく動作されているのですね。。。 数式の検証で表示されるエラー箇所に問題がある認識でいたのですが そうでないこともあり得るのですね。 改めて、見てみたのですが、試しにSUBSTITUTE関数を使わず、日付Bのデータを日付Aの形式に合わせて比較したところこちらはTRUEとなりました。 ですが、なぜTRUEにならないのかは不明のままです...
Mr.sijimi

2020/11/25 00:47

kikukiku様 match条件の引数1にて「"*"&SUBSTITUTE(…」の箇所を「"20"&SUBSTITUTE(…」に変更をして試したのですが、結果は変わらずfalseのままでした。
kikukiku

2020/11/25 00:48

日付Bの表示形式が文字列以外になっているとか?
kikukiku

2020/11/25 00:50

日付Aの表示形式も文字列以外になっているとか?
Mr.sijimi

2020/11/25 00:52

kikukiku様 1つ目の内容にて提示している前提条件に背いてはしまうのですが、 表示形式をそろえても状況は変わらずですね。
kikukiku

2020/11/25 00:55

こちらでは動いているので、不思議ですね。 別のExcelを新規に作って、この例のみで動作検証してみてください。
kikukiku

2020/11/25 00:58

こちらでの動作検証時の式は下記になります。 =IFERROR(IF(MATCH("20"&SUBSTITUTE(B4,"/","")&"*",$C$4:$C$6,0),TRUE),FALSE)
Mr.sijimi

2020/11/25 01:26

kikukiku様 別シートで例にならい行ったところTRUEになりました。 しかし、現環境では変わらず…不思議です。
kikukiku

2020/11/25 01:29

「日付A.1行」や、「日付B.1行:4行」部分の定義は、 名前を使っているのでしょうか? 名前は当方では使ったことがないのでアドバイスできないのですが、 ここの部分の定義に問題があるのかなと思いました。
kikukiku

2020/11/25 01:30

名前を使わずに、B4とかの指定に変えてみてはどうでしょう。
Mr.sijimi

2020/11/25 01:34

Excel上ではkikukiku様と同じようにA1などの形式で定義しております。 質問上ではわかりやすくするために変えておりました。 ややこしい書き方になってしまいすみません…
kikukiku

2020/11/25 01:39

うーーん。なぜエラーになるのかな。 申し訳ないのですが、お手上げです。 どなたかわかる方、お願いします。
Mr.sijimi

2020/11/25 01:44

kikukiku様 解決に向けご協力いただき本当にありがとうございました。 radames1000様の方法にて解決できました。 ですが、なぜFALSEになってしまうのか…の問題はモヤっとしたまま… もっと知識・力をつけていきます。
radames1000

2020/11/25 01:59

値が数値の場合は部分一致でのMATCHは使えません。 セルが文字列設定でも値が数値であれば同じく使えません。 セルを文字列設定した後に数値を入力した場合は、値が文字列になるのでMATCHが使えます。 今回は日付Bが数値と判断し、無理矢理計算で対応しました。
kikukiku

2020/11/25 02:05

radames1000さん なるほど。さずがです。納得。
Mr.sijimi

2020/11/25 02:45

radames1000様 未解決問題に対してのご回答までありがとうございます! 入力されている値の設定がエラーの原因だったのですね。 ありがとうございます!納得できました!
guest

回答1

0

ベストアンサー

こんな感じでしょうか。

Excel

1=IFERROR(IF(MATCH("*" & 日付A.1行 &" *",日付B.1行:4行,0),TRUE),FALSE)

Excel

1=IF(COUNTIFS(日付B.1行:4行,">="&"20"&SUBSTITUTE(日付A.1行,"/","")*10000,日付B.1行:4行,"<"&"20"&SUBSTITUTE(日付A.1行,"/","")*10000+10000)>0,TRUE,FALSE)

投稿2020/11/24 06:10

編集2020/11/25 01:20
radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mr.sijimi

2020/11/24 06:22

radames1000様 ありがとうございます! 早速試してみます。
Mr.sijimi

2020/11/24 06:37

radames1000様 理想の結果にすることができました! ありがとうございました!
Mr.sijimi

2020/11/25 01:35

連日のご回答ありがとうございます。 ご提示の方法にて試してみます!
Mr.sijimi

2020/11/25 01:41

radames1000様 ご提示の方法で解決できました! 連日の投稿でのご回答本当にありがとうございました。 改めてBAにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問