人に聞けない痔の悩み、これでスッキリ >>

たとえば2004年5月5日~2004年5月1日までは
さかのぼって何日マイナスか?という答えを出したいとき
DATEDIFではマイナスになると#NUM!がでて答えが出ません。
 これを-5という表示にしたいのですが何か方法はありませんでしょうか?
 他にもマイナスにもならない日数計算も混在する為、
同じ計算式でコピーしたいのですが、 関数にこだわらず
何かよい方法はありますでしょうか?

A 回答 (3件)

こんにちは。

maruru01です。

単純な日数差なら、引き算をするだけでいいと思います。
ただし、両端を加算する期間日数のようなのでちょっと工夫がいります。
仮にA1に「2004/5/5」、B1に「2004/5/1」と入力されているとすると、

=B1-A1-2*(A1>B1)+1

で出来ます。
なお、A1とB1が同じ日付の場合は「1」になると解釈しました。
あと、未入力の対処も入れると、

=IF(COUNT(A1:B1)=2,B1-A1-2*(A1>B1)+1,"")

となります。
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございます
ドンピシャでした!
本当にありがとうございました!

お礼日時:2004/05/10 18:46

通常の状態では日付のマイナス表示は出来ません。

(これはエクセルの仕様なのでしょうがありません。)
但し、データを入力する(シートを作るとき)前にツール→オプション→計算方法から下の「1904年から」にチエックを入れると計算が出来るようになります。この場合、日付のシリアル値が約4年分ずれます。他のシートとの互換性も失われてしまいます。(このチエックは本来Macとの互換性を保つために設けられたものですが。)
    • good
    • 1
この回答へのお礼

ありがとうございます
やはり抜け道はあるのですね

お礼日時:2004/05/10 18:48

=-datedif(a1,b1,"yd")


と「-」を付ければよいと思います。

A列の日付からB列の日付までの日数で、同じ計算式でということなら、

=IF(A1>B1,-DATEDIF(B1,A1,"yd"),-DATEDIF(A1,B1,"yd"))
    • good
    • 2
この回答へのお礼

ありがとうございます
これだとちょっと日付がずれてしまうので・・・

お礼日時:2004/05/10 18:47

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

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

このQ&Aを見た人が検索しているワード

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

QDATEDIF関数と普通の引き算による日数計算

7月25日(セルA1)から7月1日(セルB1)までの日数を計算する場合、B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?(閏年や、月ごとの総日数の違いなどにより)

日数計算の場合、DATEDIF関数というものもあるようなのですが、これを使うと日数がマイナスになってしまう場合、エラーになってしまうようです。

後者の方が正確であるならば、DATEDIF関数を使いたいんですが、その場合、引き算の結果がプラスになる場合、マイナスになる場合が混在しているデータで使用する場合、どのような計算式を入力すればよいのかが分かりません。

どなたか御存知の方、よろしくお願いします。
ちなみに、単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。

Aベストアンサー

用途によりますが、単純な日数計算なら基本的には誤差は出ないと思いますよ。
Excel内では、1900年1月1日を1として、1日ごとに1増える計算になっていますので。
ようするに、数字同士の引き算ですからね。

閏年は計算に入っていますし、月ごとの総日数も関係ないですし。

DATEDIFを使うなら、IF関数で大きさを比べて使ってみてはいかがでしょうか?

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

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列> <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ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

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すると関係ないセルの値が返るので、
場...続きを読む

QExcelで、期限切れのリストが一目で分かるようにしたい

こんにちは。
Excelで申し込み受け付けリストを作っているのですが、
申込日から3カ月経ったものは、期限切れとして
自動的に見分けがつく方法を探しています。
(例えば文字色が赤に変わるなど)

方法をご存知の方、教えて頂ければ幸いです。

Aベストアンサー

例えばA列に日付が入力されているとして、A列を選択してから、「ホーム」タブの「条件付き書式」で「新しいルール」を選択し、その後に、「数式を使用して、書式設定するセルを決定」を選択します。
式の窓には =DATEDIF(A1,TODAY(),"M")>=3 を入力してから「書式」をクリックし「フォント」タブから「色」で赤色を設定してOKすればよいでしょう。

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エクセル関数で日付かどうかの確認?

ワークシート関数でセル内が日付かどうか調べるものはないでしょうか?
VBAのIsDateなら存じておりますが。

Aベストアンサー

日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。
調べたいセルがA1だとして
=cell("format",A1)

"D1"になれば概ね日付だと判別できます。
時刻を含めたものにする場合は、
Dで始まることをチェックすればいいかも。
詳しくは、CELL関数のヘルプを参照してください。

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html

Qエクセルで入力した日付が今日を過ぎた場合に赤くなるには

どのような関数(式)を設定すればいいのでしょうか?
例えば、今日3月23日とあるセルに入力します。
今日は黒い文字なのですが、それを来週(3月24日)に
見ると、赤く表示させたいのです。
宜しくお願い申し上げます。

Aベストアンサー

条件付書式の設定をすれば、可能です。

(1) 設定するセルを指定
(2) [書式] → [条件付書式]
(3) 条件の条件を設定
「セルの値が」 「次の値より小さい」 「=today()」
(4) [書式]ボタンを押下
(5) フォントの色を赤に設定

の手順でできます。


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

人気Q&Aランキング