準・究極の選択

お世話になります。
お願いします。

下図のようなA1:B6の表があります。
A列の商品に対して、B列に販売した日時を入力していきます。
セルには日付形式で入力されてます。
空白セルのところもありますし、同月が入ることもあります。
商品名は重複しません。

E1:P2が別表の作りです。
1行目は月を表してて手入力で「1,2,3・・・12」と入ってます。

B列の日時から月だけを判断するようにして、該当する月のところに件数を表示されるようにしたいです。
図の場合は2月のセルに2件、3月のセルに1件、5月のセルに1件、と表してます。

これをVBAを使わずに関数で対応したく、いろいろ考えたのですがどうしても上手くいきません。
特にMONTHを上手く配列で使えず、もうそこで考えが止まってしまいました。。。

関数に詳しい皆様にお知恵を拝借したく。
どうぞよろしくお願いします。

※お礼や補足ができるのは翌日夜になってしまうと思います。

「関数。商品に日時が入ったら別表の月のとこ」の質問画像

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

  • すみません、4月と5月のところが違ってました。
    4月、5月の図の違いは気にしないでください、単純なミスです。

      補足日時:2017/03/23 22:18

A 回答 (2件)

E2へ


=SUM(IF(($B$2:$B$6)<>"",(MONTH($B$2:$B$6)=E1)*1))
と入力し、Ctrl+Shitt+Enterキーで確定してください。(配列数式です)
それをオートフィルで、右へP2までコピーしてください。
「関数。商品に日時が入ったら別表の月のとこ」の回答画像1
    • good
    • 1
この回答へのお礼

これです!
求めていた答えです!

今後の応用のことも考えてどうしてもMONTHを配列で使いたかったのです。
「*1」を付けるのですねー、思いつきませんでした。

本当に勉強になりました。
ありがとうございました!

お礼日時:2017/03/24 19:04

わざわざ配列にしなくても、C列(じゃなくてもどこでもいいですが)に


C2=MONTH(B2)
をC3~C6にコピーして、
E2=COUNTIF($C:$C,E1)
をF2~P2にコピー。
とすれば良いかと。

今回は単純な物なので問題ないと思いますが、配列は数が増えると重くなる原因となります。
なので列全体を指定することもお勧めできません。
データが増えるのであれば範囲の指定も予めしておくか、その都度修正する必要があります。
予め行っていた場合も数が増えて範囲を超えていないか確認しなくてはなりません。
どうしても自動で行いたいなら、INDIRECTとCOUNTAでしょうか。
データの増える心配がなく、どうしても作業列は使いたくない、というのであれば配列でよろしいかと。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

今回は作業列をつくることなく計算したかったのでNo1さんの式を応用させて頂きます。

動作が重くなる等は重々承知しております。
アドバイスありがとうございました!

お礼日時:2017/03/24 19:06

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


おすすめ情報