重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel 関数に詳しい方教えてください。

filter関数を使って、
・B列のシリアル値の月がA1と同じもの
・B列が空白のもの
を抜き出して且つ、A列B列ともに空白の場合は除きたいです。
※A1には必要に応じて変更するシリアル値が入ります。

C列に=MONTH(B2:B6)を入れてみたり、IFとかANDとかORとか色々やってみたのですが、都度エラーが起きてしまい画像の用が足りない状態から進みません…。 (本当は、A列B列のみで出来るのであれば、C列など列の追加も極力したくないです)

また、上記とは別の箇所に
・B列が空白でもシリアル値ではない場合
も抜き出したいとも思っています。


以上をマクロではなく関数で処理したいと思っているのですが、良い案があれば教えて頂きたいです。
※色々考えてfilter関数がベストかなと思ったのですが、別のやり方でオススメあればよろしくお願いします。

「Excel 関数に詳しい方教えてください」の質問画像

質問者からの補足コメント

  • 【訂正】
    ×・B列が空白でもシリアル値ではない場合
    〇・B列が空白でもシリアル値でもない場合

    失礼致しました。具体的に言えば、6月 など文字列が入っている場合です。

      補足日時:2021/05/26 23:52

A 回答 (2件)

失礼しました。


日付が空白という条件を見落としていました。
FILTER関数は複数の条件を処理できません。

・・・
複数の条件を満たす場合を表示させるというのであれば、作業列としてC列を使うのはアリ。

ただし、C列には条件が成立しているかどうかを示す値を表示させなきゃダメ。
 =EXACT(MONTH($A$1),MONTH(B2))
とかね。
ここに空白も条件に加えるんです。
2つの条件のどちらかが成立していれば良いので、OR関数を使って繋げば良いでしょう。
あとは
 =FILTER(A2:C7,C2:C7)=TRUE,)
とでもすればいい。

なお、エラーに関しては一切処理していませんので、
日付を入力する場所に文字列が入力されるとFILTER関数はスピルエラーを返します。

・・・

この場合FILTER関数は、日付が空白の場所には
 0
が返り
表示は
 1900/1/0
となるので、ゼロ値を表示しないようにセルの表示形式を設定しておきましょう。
ユーザー表示形式で「yyy/m/d;;;@」とすれば良い。

※ セルの表示形式は
 プラスの値;マイナスの値;ゼロ値;文字列
で指定するので、プラスの値だけ指定して他を指定しなければ良い。


・・・余談・・・

このままでは「ぱんだ」の下の空白も拾いますので、
 A列が空白でない
という条件も追加することを勧めます。
    • good
    • 0
この回答へのお礼

重ねてありがとうございます!

今ちょうど、
=FILTER(A2:B6,(MONTH(B2:B6)=MONTH(A1))+(B2:B6=""),)
という式を入れてみて、日付の空白とぱんだ下の空白に困って迷走タイムに入りかけていたのでとても助かりました!

おかげさまで解決致しました(*´꒳​`*)
夜分に大変ありがとうございました!

お礼日時:2021/05/27 01:40

ええと。


 =FILTER(A2:B7,MONTH(B2:B7)=MONTH(A1),)
のような気がするんだけど、違うのかな。
C列いらないでしょ。

条件を見れば分かると思いますが、”月” の値が同じという事です。
(”年” が違っても見なかったことにしている)

・・・

それとも Excel365 やサブスクリプション形式の Excel2016 以外の
FILTER関数を使えないバージョンでもできる方法を求めていらっしゃるのでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
その場合、画像でいうところの「らっぱ」の行が表示されず、C列を追加してみたりIFしてみたりしているうちに迷走状態になってしまいました…。

お礼日時:2021/05/27 00:28

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