あなたの映画力を試せる!POPLETA映画検定(無料) >>

こんにちは。エクセルの関数で質問させてください。
◆条件
・添付画像の1行目に、対象期間(1月16日 ~ 1月22日)を記載しています。
・4行目以降に、プラン毎の開始日と終了日を記載しています。

◆やりたいこと
・各プランが、対象期間に何日間含まれているかを関数で抽出したいです。(D列黄色箇所)

何卒よろしくお願い致します。。。!

「エクセル関数/対象期間内の日数をカウント」の質問画像

A 回答 (4件)

他の日付での検証をしていませんが。


DAYS関数などで2つの日付の間の期間を返します。
https://kokodane.com/kansu_hiduke_04.htm
開始日と対象期間の開始日の最大値を求めます。
終了日と対象期間の最小値を求めます。
これで対象期間内の日数が求められると思います。
2つの日付の間の期間を返します。
 =IF(B4="","",DAYS(MIN($D$1,C4)+1,MAX($B$1,B4)))
「エクセル関数/対象期間内の日数をカウント」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
また、関数の詳細も記載してくださってありがとうございます!!
ぴたりと計算されて大変驚きました。。。。すごいです!!!
次の作業に進むことができて大変感謝しております。ありがとうございます。

お礼日時:2018/01/23 14:10

No.1です。



> 自分でvbaを組み立てる事ができないため、vbaにて操作することができませんでした。。。

はい。
ですから検索して見つかる説明ページには「こうすると出来ますよ」というVBAのコードが説明されていると思いますが。。。
    • good
    • 0

こんにちは!



画像の配置だとD4セルに
=MIN(D$1,C4)-MAX(B$1,B4)+1

とし、フィルハンドルで下へコピーしてみてください。
※ エラー処理はしていません。m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!!!
この、対象の日付の中での最小値・最大値を算出して
そこから差分を割り出すという考え方に、本当に驚き、尊敬しました。
ありがとうございます。。!!!
ベストアンサー悩んだのですが、先に回答してくださった方にさせて頂きます。。。
本当にありがとうございます!!!

お礼日時:2018/01/23 14:12

とりあえずGoogleなどで「vba 日数計算」といったキーワードで検索してみてください。


たくさんの説明ページがヒットするはずです。
中には閏年の考慮がないものもあると思いますのでご注意ください。その際はキーワードに「閏年」とか「うるう年」といった語を追加すると効果のある場合があります。

参考まで。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!!
自分でvbaを組み立てる事ができないため、vbaにて操作することができませんでした。。。すみません。。。!

お礼日時:2018/01/23 14:06

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください

例えばこんなデータなのですが、

2002/07/01 99 25 36
2002/07/05 55 33 25
2002/08/01 80 20 51

日付の入っている列を検索して、2002/07/01から2002/07/31
の範囲ならば、その行のデータを別のシートに抽出したいのですが、
日付の範囲は関数でどうすればよいのか分かりません。ACCESSなら
between 9999/99/99 and 9999/99/99って感じで簡単にできるの
ですが。。。エクセルの関数だとIF関数の論理式にAND関数を使って
>=2002/07/01
<=2002/07/31
と入力したので、2002/07/05ならば、いずれもTRUEなので、値を返して
くれると考えたのですが、なぜかダメでした。
(↓こういう入力をしました)
=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

Aベストアンサー

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

------------余談--------------------------
ご質問の条件例の場合特例で 2002/7でればOKなので

=IF(TEXT(Sheet2!A1,"yyyym")="20027",Sheet2!A1,"該当月ありません")

でも可能ですね!

こんばんは!

=IF(AND(Sheet2!A1>=2002/7/1,Sheet2!A1<=2002/7/31),Sheet2!A1,"該当月ありません")

おしいですね(^^;
日付をそのまま入力してしまうと数式上では
 2002/7/31 → 2002÷7÷31 になってしまいます。
ダブルクォーテーションで括って(文字列)入力して
それを数値化しましょう!

=IF(AND(Sheet2!A1>="2002/7/1"*1,Sheet2!A1<="2002/7/31"*1),Sheet2!A1,"該当月ありません")

文字列 ="10" に対して 乗算 *1 としても数式が
なり立ち文字列の数字が数値化されます。="10"*1

--...続きを読む

Qエクセル 特定の期間内の場合に、特定の値を返す方法

お世話になります。
エクセルの関数でどうしてもわからないことがあり、質問させていただきます。
Aのセルに、とある年月日が記入されています。
この年月日について、特定の期間内であれば、特定の値を返すようにできたらと思います。
(期間と返す値については、下記の通りです)

<期間>           <返す値>
1943/4/1以前         空白
1943/4/2 ~ 1945/4/1  62
1945/4/2 ~ 1947/4/1  63
1947/4/2 ~ 1949/4/1  64
1949/4/2 以降        65

エクセルの知識があまりなく、本やネットなどで調べてみたのですが、なかなかうまくいきません。
詳しくていらっしゃる方にご助力いただければと思います。

どうかよろしくお願いいたします。

Aベストアンサー

Excelでは1900/1/1以前の日付は日付として扱えないため、「1943/4/1以前」ではなく「1900/1/1~1943/4/1」を空白とすると言う事でよろしいですか?

開始年と対応した値の一覧をシート上に作り、Vlookup関数で値を表示します。
例として、D1:E5に以下の様に一覧が入っているとします。
1900/1/0
1943/4/2 62
1945/4/2 63
1947/4/2 64
1949/4/2 65

B1セルに =""&VLOOKUP(A1,D1:E5,2) と入力し、A1セルに適当な日付を入れて見てください。

Q期間と条件を指定してカウントする関数。

下記の図でG4~I6に入る関数を教えて下さい。

ピボットテーブルを試しましたがよく分からず、COUNTIFS関数を使用しましたが
日付の入力の仕方がいまいちわかりません。

試しにG4に入力した関数は以下の通りです。

=COUNTIFS(D:D,"○○",C:C,8/16:8/21)

この8/16~8/21という指定の仕方がわかりません。

どういう関数を入れればカウントできますでしょうか?
あと出来ればこのフォームを使い回したいので表のG3~I3の数字を変えるだけで
カウント出来るようにしたいのですが可能でしょうか?

宜しくお願いします。

Aベストアンサー

回答No.1の数式に一部誤りがありましたので訂正します。
G4=COUNTIFS($D:$D,F4,C:C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1)
   ↓
G4=COUNTIFS($D:$D,$F4,$C:$C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1)

数式中のC:Cを$C:$Cに、F4を$F4に修正しました。

誤りの内容はセルの指定で$が不足しているため右にコピーしたとき検索条件範囲が移動してしまうことです。
検証時にはH3セルとI3セルの範囲に入るデータが存在しなかったのでチェック漏れになりました。

あなたの検証で全てが0と表示されることとは異なるチェックミスです。

QExcel日程表:開始日~終了日を自動で色付けたい

Excelで月間スケジュールを作りたいと思います。

複数案件の一覧表にし、案件の開始日と終了日の期間のセルに、自動で色が付くようにしたいです。
条件付き書式で出来るでしょうか?
どのような条件付けをすれば実現できますか?
添付画像のような表をイメージしています。

<やりたいこと>
(1)左側に日付を入れると、右側のカレンダー部分に色がつく。(開始日から納品日まで)
(2)受注日と納品日は濃い色を付ける。
(3)月をまたがる日付を入れてもエラーにならない。

<目的>
各案件への取り組み期間が一見してわかるようにしたいです。
複数案件の進行が重複し、稼働の重たくなる時期を確かめるためです。


※2003でも2007でも使える書式設定でお願いします。
※私はマクロの知識が乏しい&Excelスキルの低い同僚にも使ってもらうため、マクロは使いたくありません。
※のちのち数式が崩れたときにも修復が容易なように、シンプルな数式だとありがたいです。
※条件付き書式以外の方法で、上記が解決できるならそれも教えてください。



ご教授ください。よろしくお願いします。

Excelで月間スケジュールを作りたいと思います。

複数案件の一覧表にし、案件の開始日と終了日の期間のセルに、自動で色が付くようにしたいです。
条件付き書式で出来るでしょうか?
どのような条件付けをすれば実現できますか?
添付画像のような表をイメージしています。

<やりたいこと>
(1)左側に日付を入れると、右側のカレンダー部分に色がつく。(開始日から納品日まで)
(2)受注日と納品日は濃い色を付ける。
(3)月をまたがる日付を入れてもエラーにならない。

<目的>
各案件への取り組み期間が一見...続きを読む

Aベストアンサー

こんばんは!
一例です。
カレンダーもシリアル値の方が何かと便利ですので、
余計なお世話かもしれませんが、↓の画像のようにカレンダーを作成します。
(開始日・受注日・納品日はすべてシリアル値で入力します)

A1セルに「西暦年」C1セルに「月」を入力します。
E3セル(セルの表示形式はユーザー定義から d とだけしておきます)に
=IF(MONTH(DATE($A$1,$C$1,COLUMN(A1)))=$C$1,DATE($A$1,$C$1,COLUMN(A1)),"")

E4セルに
=IF(E3="","",TEXT(E3,"aaa"))
という数式を入れ、E3・E4セルを範囲指定 → E4セルのフィルハンドルでAI列までコピーしておきます。
これで「年」・「月」を変更すればちゃんと大の月・小の月の対応ができます。

後は条件付書式で可能です。
Excel2003の場合
色を付けたいセル(E5セル以降)をすべて範囲指定
書式 → 条件付書式 → 「数式が」を選択 → 数式欄に
=OR(AND(E$3<>"",E$3=$B5),AND(E$3<>"",E$3=$D5))
として → 書式 → パターンから「赤」を選択

次に条件付書式 → 「追加」 → 上記と同様に数式欄に
=AND(E$3<>"",E$3>=$B5,E$3<=$D5)
として → ・・・ → パターンから「黄色」を選択
これで↓の画像のような感じになります。

※ Excel2007以降ですと、条件付書式 → 「数式を使用して・・・」という項目になると思います。
数式欄は同じ数式にします。

※ 条件が重複する場合は最初の条件付書式が優先されますので、
「受注日」・「納品日」の条件付書式を条件1にします。
Excel2007以降の場合は条件付書式の項目で上の行に表示されている方が優先されますので、
右側の▲▼で優先順位は自由に変更できます。

参考になりますかね?m(_ _)m

こんばんは!
一例です。
カレンダーもシリアル値の方が何かと便利ですので、
余計なお世話かもしれませんが、↓の画像のようにカレンダーを作成します。
(開始日・受注日・納品日はすべてシリアル値で入力します)

A1セルに「西暦年」C1セルに「月」を入力します。
E3セル(セルの表示形式はユーザー定義から d とだけしておきます)に
=IF(MONTH(DATE($A$1,$C$1,COLUMN(A1)))=$C$1,DATE($A$1,$C$1,COLUMN(A1)),"")

E4セルに
=IF(E3="","",TEXT(E3,"aaa"))
という数式を入れ、E3・E4セルを範囲指定 → E4セ...続きを読む

QSUMIF関数で、条件に日付範囲で指定するには?

SUMIF関数で、条件に日付をいれたいのですが、
10日毎の範囲で集計を取るにはどうすればいいでしょうか。

A列に日付、B列に数値で
=SUMIF(A:A,"【2013/9/1~2013/9/10】",B:B) 
こんな感じで日付の部分が問題のところです。

date関数を入れてみると例えば9/3だけなど、一日だけの計算はできたのですが…
1~10,11~20、21~末日(31日)で合計するにはどう記入すればいいでしょうか。

Aベストアンサー

こんにちは。

2013/9/10までを求めて、2013/9/1以前を引けば答えが出ます。
=SUMIF(A:A,">=2013/9/10",B:B)-SUMIF(A:A,"<2013/9/1",B:B)

どうでしょうか。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q指定した期間内での数値を合計する関数。

関数について教えて下さい。

SUMIF関数で条件に合うセル内の数値を合計するのは出来るのですが
その条件に更に条件を加えたいのですがやり方がわかりません。

下記の画像でD28セルに8/1~8/3までの間の海山商事さんの個数を
合計して表示させるにはどんな関数が入るでしょうか?

SUMIF関数で全期間の海山商事さんの個数を合計する事はできますが
期間を指定する関数がどうしてもわかりません。

初歩的な質問かもしれませんがよろしくお願いします。

Aベストアンサー

こんにちは。

8/3までの個数から8/1以前の個数を引けば8/1~8/3までの個数になります。

=SUMIF(B5:B20,"<=8/3",F5:F20")-SUMIF(B5:B20,"<8/1",F5:F20")

今回は8/1から始まっていて以前がないので、8/3までの個数を求めればSれが答えになります。

Qエクセルでの期間の重複について

方法が全く思いつかないので、お手数ですが、ご回答おねがいします!
 下のようなリストがあります。

  A  B     C      D
1 井上 主任 2000/6/26 2003/3/20
2 井上 課長 2002/3/20  2003/3/20

 この表で、井上さんが主任をしていた期間と、
 課長をしていた期間がかぶっています(兼任の為)
 しかし、兼任を考慮しないでカウントしてしまうと 職務期間の合計があわなくなります。
 役職上、課長の期間を優先して日数のカウントをし たいんですが・・・
 当方、恥ずかしながらマクロは使えません。
 関数等、VBAを避けてなんとか出来ないかと考えていますが、
 手動でチェックするにもせめて重複している項目が目でみてわかるようにならないかと質問させて頂きました。
 是非、よろしくお願いします! 

Aベストアンサー

お疲れ様です。
くわしく説明しようとして、遅くなってすいません。
あてはまらなかったらすまないのですが、前提条件として、
降格人事がないことと(課長と主任の)兼任終了日が同一であることを前提に不完全ながら考えてみました。

|A |B |C |D | E |F |G |H |I
1|氏名|役職|就任日 |最終日 |序 |勤続|役職に |兼任|役職
列 |日数|兼任して|前の|在任
|いた日数|日数|日数
―――――――――――――――――――――――――――――
2|井上|課長|2002/3/20|2003/3/20| 3 |1004| 365| ▼|365
3|井上|主任|2000/6/26|2003/3/20| 2 | ▼| 0| 639|997
4| □ |  | | | | ▼| 0| ▼|▼
5|井上|担当|2000/6/19|2002/6/25| 1 | ▼| 0| ▼|▼
6|佐藤|部長|2003/3/19|2003/3/20| 3 |1083| 1| ▼| 1
7|佐藤|課長|2000/6/26|2003/3/20| 2 | ▼| 0|1082|997
8| □ |  | | |  | ▼| 0| ▼|▼
9|佐藤|担当|2000/ 4/1|2000/6/25| 1 | ▼| 0| 0|▼

不完全ながら面倒ですいませんが、
a.まず勤続日数ほか数式をコピーするために、空白セル(□の記号が挿入した空白セルです)を必要なだけ挿入して、
 個人の行数を同一にします(例では4行ですが、揃えるためには何行でも空白セルを挿入して下さい)
b.その時の注意として、課長と主任を兼任していた行の間(例では3・4行目7・8行目)に空白セルは入れないで下さい
(これが兼任していた日数を算出する数式に必須なので)。
c.例のE列の序列欄は空白列でかまわないので挿入しておいて下さい。
 本来は必要ありませんが、主任より課長の役職が高い(優先したい)ということをはっきりさせることが必要な場合や、
 並べ替えで必要な時には作成して下さい。
 B列をコピーして貼り付け(挿入)して、置換して数字に置き換えて下さい。
ここから関数を説明します。
d.例のF列の勤続日数は、例ではF3に=D2-C5と入力してコピーして下さい
(表の▼のセルは計算結果を表示させなくていいセルですなのですが、数式が思いつかず変な値が出てしまいますので、
 まぎらわしいので消したほうがいいでしょう)。
 要は、左下が入社日、右上が計算上の最終日で、このセルの位置関係を統一しないと、トータルの日数の計算式がコピーできないので、
 空白行を挿入して、個人別に行数を同じにする必要があるのです。
e.G列の役職に兼任していた日数は、F2に=IF(D2=D3,D2-C2,0)を入力してコピーして下さい。
 兼任終了後も同じ役職でいた(仮に課長)とすれば、課長の行を2行にして、兼任最終日までのデータと、
 それ以降のデータを上の行に挿入して下さい。
(そうした時も、a.で説明した、個人の行数が同一になることに気をつけて下さい)
 それでもあてはまらない場合は、数式のD2=D3をC列に数式を変えるなど、工夫していただければ幸いです
f.兼任前の日数は、H3に=F2-G2と入力して下さい(上の行を参照しているので、H2に入力するとエラー値が出ます)。
g.役職在任日数は、I2に=D2-C2と入力
月の定義があいまいなので、日数/30などで概算を出していただければと思います。
参考になれば幸いです。

お疲れ様です。
くわしく説明しようとして、遅くなってすいません。
あてはまらなかったらすまないのですが、前提条件として、
降格人事がないことと(課長と主任の)兼任終了日が同一であることを前提に不完全ながら考えてみました。

|A |B |C |D | E |F |G |H |I
1|氏名|役職|就任日 |最終日 |序 |勤続|役職に |兼任|役職
列 |日数|兼任して|前の|在任
|いた日数|日数|日数
――――――――――――...続きを読む

Qエクセル COUNTIF関数 検索条件を 5月中のように広く指定したい

エクセル COUNTIF関数で
検索条件の項目を
一つの数値や文字列でなく、
シリアル値で入力されている5月というふうに指定したいのですが、
どのように入力したらいいのでしょうか。

仮に
=COUNTIF(A1:A10,検索条件)
として、A1からA10にはシリアル値で日付が入力されているとして
5月1日から5月31日を調べたいとき
検索条件にどのように入力したらよいでしょうか。

宜しくお願いします。

Aベストアンサー

B列を作業列に使います。

(1)B1に「=MONTH(A1)」と入力し、A10までコピー
(2)C1に「=COUNTIF(B1:B10,5)」と入力

これで5月の数がC1に出ます。

QCOUNTIFS関数で日付データを数えたい

COUNTIFS関数で日付データを数えたいのですがうまくいかず悩んでいます。

以下のようなデータがあります。

A列       B列
9月1日(日)  件数
9月2日(月)  件数
9月3日(火)  件数
9月4日(水)  件数


データはデータシートに
A列
2014/9/1 21:32
2014/9/1 21:31
2014/9/2 20:31
2014/9/2 21:26
2014/9/3 19:25
2014/9/3 21:30
2014/9/4 18:10

このような形にあります

上以外にも条件があるのでCOUNTIFS関数で件数をかぞえようと思い

9月1日の件数を数えるB1に

(1) =COUNTIFS(データ!A1:A7,">=A1",データ!A1:A7,"<A2")
といれてみましたがうまくいきません。

(2) =COUNTIFS(データ!A1:A7,">=2014/09/01",データ!A1:A,"<2014/09/2")
とすると件数がでてきました。

日付データを直接入力せず (1)のようにセルで入力するにはどのようにすればいいのでしょうか
また、他に方法があれば教えていただけないでしょうか

よろしくお願いいたします。

COUNTIFS関数で日付データを数えたいのですがうまくいかず悩んでいます。

以下のようなデータがあります。

A列       B列
9月1日(日)  件数
9月2日(月)  件数
9月3日(火)  件数
9月4日(水)  件数


データはデータシートに
A列
2014/9/1 21:32
2014/9/1 21:31
2014/9/2 20:31
2014/9/2 21:26
2014/9/3 19:25
2014/9/3 21:30
2014/9/4 18:10

このような形にあります

上以外にも条件があるのでCOUNTIFS関数で件数をかぞえようと思い

9月1日の件数を数えるB1に

(1) =COUNTIFS(データ!A...続きを読む

Aベストアンサー

1の方のは、時刻が入ってるので範囲が微妙にずれますね。

=COUNTIFS(A1:A7,">="&INT(A1),A1:A7,"<"&INT(A1)+1)

としてください。

もしくは
B1に 2014/09/01 と入力して(または、=INT(A1) でも可)

=COUNTIFS(A1:A7,">="&B1,A1:A7,"<"&B1+1)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング