人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel関数についての、皆様の知恵をお貸し下さい。

在る時間帯に何人の客がきたかということに関しては「countif」関数でうまく集計できていました。 実は、「日付」も一緒に区別して計算させたいと思っています。 今までは、日付ごとにデータを分けてそれぞれ数えていたのですが、それをいっぺんに行うことは可能でしょうか? 例えば1月に入った客で、午前中に入った客が 1月10日なら○人、1月11日なら○人 あるいは、1月10日に入った客は午前中は○人、午後は○人。1月11日は午前中に○人、午後は○人。 という感じです。

もし、そんな関数がある、あるいは それならこの関数を複合すればよいなどありましたら、是非教えてください。
ちなみに、元のデータは「日付」「時間」だけのデータベースです。

●質問者: kiyonorida
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:1月 1月10日 1月11日 Excel データ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● psycho24
●22ポイント

配列を使うと上手くいきますよ

http://pc.nikkeibp.co.jp/pc21/special/hr/hr1.shtml

◎質問者からの返答

なるほど。配列というものを恥ずかしながら初めて知りました。さっそく読んでみます。ありがとうございました。


2 ● Mook
●34ポイント ベストアンサー

たとえばデータが下記のようであった場合、

A B
1 3月4日 9:10
2 3月4日 11:30
3 3月5日 10:00
4 3月5日 13:20
5 3月5日 15:20
6 3月5日 10:10
7 3月6日 11:10
8 3月6日 14:10
9 3月6日 15:10
10 3月6日 17:10

集計列を

D E F
1 日付 AM PM
2 3月4日 式1 式2
3 3月5日 式1をコピー 式2をコピー
4 3月5日 式1をコピー 式2をコピー
5 3月5日 式1をコピー 式2をコピー

のようにしたと仮定すると E2 に下記のような数式を記述し Ctl + Shift + Enter を押します。

【式1】
=SUM(($A$1:$A$10=$D2)*($B$1:$B$10<0.5))

同じくF2 に下記のような数式を記述し Ctl + Shift + Enter を押します。

【式2】
=SUM(($A$1:$A$10=$D2)*($B$1:$B$10>=0.5))

E2:F2 をコピーし、E3:F5 にコピーすれば、それぞれの日付の午前、午後を集計できます。


式の意味については、配列数式をご参照ください。

http://t_shun.at.infoseek.co.jp/My_Page/Excel-REF/ref_page4-1.ht...


【応用】

・時間で集計する場合は、0.5 の部分を (時間/24)の数値に置き換えます。

・条件を*()をつなげることで、開始時間と終了時間で指定した集計も可能になります。


VBA が使用できれば、ユーザ関数を作成して日付と時間で集計できる関数を定義するといった

方法も可能かもしれません。


コメントを有効にしていただければ、不明な点は対応します。

◎質問者からの返答

なるほど。 配列数式を知ってから少し勉強し、FREQUENCYとIF関数を組み合わせる方法を使ってみましたが、SUM関数は式が長くなりますが、扱いやすいですね。勉強になります。


3 ● pahoo
●17ポイント

SUMPRODUCT関数で実現できます。

他にもやり方があり、「countifで複数条件」の中程をご覧下さい。

◎質問者からの返答

はじめはcountif関数でがんばっていたのですが、応用できるんですね。ありがとうございます。


4 ● sankei_antenna
●17ポイント

http://www.excel-jiten.net/formula/serial_datetime.htmlによれば、

シリアル値とは、日付と時刻を表す数値のことです。

その数値の整数部分は「日付」を、小数部分は「時刻」を表します。

とされています。このことを利用して、作業用の列を使用する場合を考えてみました。

1 A列に日付のシリアル値、B列に時刻のシリアル値がそれぞれ1行目から100行目まで入力されているデータベースがある場合、C1からC100までのセルに、次のように式を入れます。

=A2+B2 (C2の場合)

2 調べたい日が、例えばG5に入力されているとします。そのとき、

? その日の午前の個数を求めるときは、次のように関数を入力します。

=COUNTIF($C$1:$C$100,"<"&(G5+0.5))-COUNTIF($C$1:$C$100,"<"&G5)

上記式中、"G5+0.5"とは調べたい日の正午を表します(以下同じ)。

? ある日の午後の個数を求めるときは、次のように関数を入力します。

=COUNTIF($C$1:$C$100,">="&(G5+0.5))-COUNTIF($C$1:$C$100,">="&(G5+1))

上記式中、"G5+1"とは調べたい日の翌日を表します。

◎質問者からの返答

恥ずかしながら、シリアル値の定義を初めて知りました。 知識がたくさんあると応用のしがいがあるんだと、つくづく感じました。ありがとうございます

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ