契約日と契約解除日があり、三か月以内に契約を解除したデータに「1」と表示させる式を教えて頂けないでしょうか。

   B列(契約開始日)    D列(契約消滅日)   E列(三か月以内のデータ表示列)
2   2009/12/01        2010/03/02
3   2010/01/01        2010/03/24       1
4   2010/03/01        2010/03/29       1
5   2009/12/02        2010/04/10
6   2009/12/01        2010/03/28   
7   2010/01/01        2010/04/26
8   2010/02/01        2010/04/27       1


調べながら次のような式を作成したのですがなかなかうまくいきません。

=IF(DATEDIF(B2,D2,"M")<=3,"1","")

上記の式を使用した場合、本来であれば3ヶ月以内のデータのみチェックされるはずが
3ヶ月+α(残りの日付)までカウントしてチェックする為、正しくデータを抽出できない状況です。

(例)
  上記表 (B5,D5) 、(B6,D6)、 (B7,D7) は、三か月以上のデータですが何故か「1」とチェックが入ってしまいます。

丸投げのようで申し訳ございませんが、お知恵をお借りしたくよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

=IF(EDATE(B2,3)>C2,1,"")



でいかがでしょう

利用するためには[分析ツール]アドインの組み込みが必要です。
分析ツールを組み込んでおけば
EOMONTH
なんかも使えて便利になりますよ
    • good
    • 0

3か月を90人かではなくて、DATEDIF関数でMを(月に満たない日数は切捨て)で3未満であれば1を返すで、科mん単では。

これは実際の暦の上の勘定で、2つの日付について計算すると思う。
IF関数部の比較で等号を入れなければ、0か月、1ヶ月+α、2ヶ月、2ヶ月+α、が条件を満たすことになるのでは。
私の勘違いかな。
DATE[DIF関数でMを指定したら返る値は1,2なら3ヶ月未満なのではないですか
ーー
3ヶ月丁度を条件を満たす、に入れたいなら
2つの別の式で
Mの式で3、
MD(Mで切り捨てられた日数)の式で0
の場合は条件を満たす式という式を作れば良いのでは。
    • good
    • 0

こんばんは!


すでに回答は出ていますので、余計なお世話かもしれませんが、
一例です。

E2セルに
=IF(C2<=EDATE(B2,3),1,"")
(エラー処理はしていません)
という数式を入れ、オートフィルで下へコピーではどうでしょうか?

尚、EDATE関数を使用するに当たり当方使用のExcel2003以前のバージョンでは
メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。

参考になれば良いのですが・・・m(__)m
    • good
    • 0

#1です。

間違ってました。すみません。

=IF(DATEDIF(B2,D2,"M")<=3,if(day(B2)<day(d2),"1",""),"")
は誤ってます。

列Eでの評価の前に、列Fに式[=IF(DATEDIF(B2,D2,"M")]を設定してみてはどうでしょう。

12を越えた値が得られることを期待してますので試験用に
 2009/02/01        2010/03/01 も設けてみてください。 
    • good
    • 0

とりあえずDATEDIF(日付,日付,"M")は,「丸三ヶ月を過ぎていて,丸4ヶ月は過ぎていません(3月プラスα日はあるかもしれないし無いかもしれない)」を計算する関数です。


従って例えば10/1/1~10/4/10のDATEDIF(,,"M")は3なので,「<=3」で判定してしまうと1になります。


ところでご質問で「ジャスト3ヶ月」(例:10/1/1~10/4/1)が1なのか1じゃなくて良いのか不明瞭ですが,仮にこれは1だとすると
=IF(DATEDIF(B2,D2-1,"M")<3,1,"")
のようにします。
    • good
    • 0

[三か月以内]の定義がはっきりしてないのでは?


2010年12月29日~31日に契約して、2011年2月28日に解除したらどうします?



=IF(DATEDIF(B2,D2,"M")<=3,if(day(B2)<day(d2),"1",""),"")
では?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんな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

--...続きを読む

QEXCEL 何日以内なら ○ と表示させたい

初めまして、こんにちは!
(まったくの初心者です)

EXCEL2000を使っているのですが

指定のセルの値が何日以内 (例:10日)なら別のセルにNEWと表示させたいのですが、そういった関数というのはあるのでしょうか?

分かる方が、いらっしゃいましたら
よろしくお願い致します。
(過去ログを見ても良く分かりませんでした。)

Aベストアンサー

指定のセルの値が、今日の日付より10日以内であれば、
”NEW”を表示させたい場合と考えて良いでしょうか?

その際の関数は「IF」を使えばいいと思います。
例えば セルA1が指定セルとします。
すると
=IF(NOW()-A1<=10,"NEW"," ")
これを「NEW」と表示させたいセルにコピー・ペースト
してください。
上記関数の説明
NOW()  ・・・ 今日の日付
-A1   ・・・ 指定セルA1を今日から引く
<=10,  ・・・ 10日以内
"NEW"  ・・・ 10日以内であれば「NEW」と表示
" "   ・・・ でなければ、何も表示しない

<=は以内を示します。
未満にしたい場合は「<」のみとしてください。
また10日以上の時に別な言葉(例えば”旧”)を
表示したいときは、「" "」を「"旧"」にすれば
いいです。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

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エクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qエクセルで現在より1年以内の日付

指定された日付より、現時点で何ヶ月たっているかを
関数でなんとかならないか?といろいろ調べていたのですが
どうしてもいい方法が見つからないので初めて書き込みをしました。

目的は発売日から現時点まで1年以内のものが
1年になるには残り何ヶ月残っているか?

というのを数式でなんとかしたいのですがかなり複雑そうだったので
自分が考えた範囲では

1・・・指定の日にちから何ヶ月たっているか?

2・・・その数値から引く12を引く

3・・・マイナスの数字が残り月

という感じなのかな?と思ったので
1番の項目がわかればいけそうな気がしてます。
よい方法があれば知識を貸して頂けるとうれしいです。

よろしくお願いします。

Aベストアンサー

こんなかんじでどうですか
A2 開始日
B2 1年後
=DATE(YEAR($A$2),MONTH($A$2)+12,DAY($A$2))
C2 経過月数
=DATEDIF($A$2,TODAY(),"M")&"月"
D2 1年後までの月数
=DATEDIF(TODAY(),B2,"YM")&"月"

DATEDIF関数
http://www.relief.jp/itnote/archives/000423.php

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に出ます。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QエクセルのIF文で「NOT=」はどう書くのですか?また、>=や<=の場合の書き方を教えてください

タイトルのとおりです

IF文で下記の3つの書き方がわかりません。

NOT=は、<>?
0以外の場合は、A1<>0?

A1が0と同じか、大きい場合は
A1>=0?

なんだか、うまくいきません^^;

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

Aベストアンサー

A1が・・・・・
A1 <> 0  0以外
A1 >= 0  0以上(0を含む)
A1 > 0   0より大きい(0は含まない)
A1 <= 0  0以下(0を含む)
A1 < 0  0未満
A1 = 0  0

=<,=> などの書き方は使えません。


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

人気Q&Aランキング

おすすめ情報