アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者の質問で恐縮ですが、excelで「あるセルに表示された日付が月末日であれば、ある言葉を表示する」ように したいのですが、適当な関数またはその他の方法はありますでしょうか。
いろいろ過去のQ&Aを調べたのですが、「月末日を表示する」方法はあっても、「月末日かどうかを判定する」方法は見付けられないのです。

A 回答 (8件)

A1に日付があるとして、月末日なら"月末"と表示、それ以外は日にちを表示として


=IF(A1=DATE(YEAR(A1),MONTH(A1)+1,0),"月末",DAY(A1))

「ツール」「アドイン」で「分析ツール」にチェックが必要ですが、こんな方法も
=IF(A1=EOMONTH(A1,0),"月末",DAY(A1))

http://www.relief.jp/itnote/archives/000491.php
    • good
    • 3
この回答へのお礼

ありがとうございます。
いろいろ方法があるのですね。
最初にNo.4さんの方法(貴法の2つ目と同じですね)に気づき、それを使わせて頂いたので、お礼を言うのが遅くなりました。申し訳ありません。

お礼日時:2011/08/02 13:28

NO7です。

大変申し訳ございません。コード間違えてました。以下の通りです。

Function 月末判定(hiduke As Date) As String

Dim lastdays As Variant '月末格納
Dim toshi As Long '年格納
Dim tuki As Long '月格納
Dim niti As Long '日格納

lastdays = Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

toshi = year(hiduke)
tuki = month(hiduke)
niti = day(hiduke)

If (toshi < 1) Or (niti < 1) Or (niti > 31) Or (tuki < 1) Or (tuki > 12) Then
月末判定 = "値が間違ってます。"
Else
'-----------------------------------------------------------------
'↓↓↓↓↓↓うるう年の時配列を、うるう年用に変える。↓↓↓↓↓↓
If tuki = 2 Then
If (toshi Mod 400 = 0) Or (toshi Mod 4 = 0) And (toshi Mod 100 <> 0) Then
lastdays(2) = 29
End If
End If
'-----------------------------------------------------------------
If niti = lastdays(tuki) Then
月末判定 = hiduke & "は月末です。"
Else
月末判定 = hiduke & "は月末でない。"
End If
End If


End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
いろいろ高度な方法があるのですね。
今回はNo.3~No.6で教えて頂いた通りExcelの関数が使えるとのことですので、そちらで処理することにしました。
懇切丁寧なご指導ありがとうございました。

お礼日時:2011/08/02 13:41

VBAで出来ますよ。



A1に2010/12/31がある場合
セルをクリックしてダブルクリックして、=月末判定(A1)とするか=月末判定("2010/12/31")
として下さい。月末判定できます。フォーマットをもっと詳しく教えてくれたら、もっとダイレクトにできます。

以下のコードをVBE(alt F11 で表示されます。)に貼り付けてください。
Function 月末判定(hiduke As Date) As String

Dim lastdays As Variant '月末格納
Dim toshi As Long '年格納
Dim tuki As Long '月格納
Dim niti As Long '日格納

lastdays = Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

toshi = year(hiduke)
tuki = month(hiduke)
niti = day(hiduke)

If (toshi < 1) And (niti < 1) And (niti > 31) And (tuki < 1) And (tuki > 12) Then
MsgBox "値が間違ってます。", vbCritical
Else
'-----------------------------------------------------------------
'↓↓↓↓↓↓うるう年の時配列を、うるう年用に変える。↓↓↓↓↓↓
If tuki = 2 Then
If (toshi Mod 400 = 0) Or (toshi Mod 4 = 0) And (toshi Mod 100 = 0) Then
lastdays(2) = 29
End If
End If
'-----------------------------------------------------------------
If niti = lastdays(tuki) Then
月末判定 = hiduke & "は月末です。"
Else
月末判定 = hiduke & "は月末でない。"
End If
End If


End Function
    • good
    • 2

A1にある「年月日」があるとすると


=IF(MONTH(A1+1)=MONTH(A1),"","月末日")
などのようで。

#その日の次の日(+1した日)が翌月なら,その日は月末日です。というだけの計算です。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
大変スマートな考え方に感心しました。

お礼日時:2011/08/01 21:20

とりあえず分かりやすい方法は


 調べたい日付に1を足して、その結果月が変わっていれば月末日と判断する方法でしょう。
すでに回答されている方法などで判断できます。

ポイントは、
 日付はシリアル値で扱われていて、
 セルの表示形式で日付として表示されている
だけと言うところですね。


実はこの方法、閏年を調べることにも応用できます。
(2月29日が2月なら閏年、3月なら閏年ではない)
    • good
    • 0
この回答へのお礼

ありがとうございます。
判定のための発想(着眼点)や他にも応用できる点について、大変参考になりました。

お礼日時:2011/08/02 13:47

こんばんは!


日付がはいるセルに「ある言葉」を表示することはできませんので、
↓の画像のようにA2セルに日付を入力した場合、月末なら「月末」と表示させる方法です。

B2セルに
=IF(A2=EOMONTH(A2,0),"月末","")
(エラー処理はしていません)

という数式を入れています。
これでA2セルの日付を色々入れてみてください。
月末の場合だけB2セルに「月末」と表示されます。

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

参考になれば良いのですが・・・m(_ _)m
「excelで月末日を判定したい」の回答画像4
    • good
    • 1
この回答へのお礼

関数EOMONTHにこんな使い方があることに気が付きませんでした。
早速適切なご回答をありがとうございました。

お礼日時:2011/08/01 21:24

月末日は年と月によって変わる。

その年と月はどうするのか質問に書かないと。
A1セルに年月日が入っているとして、そのセルの値は日付シリアル値(注)として、その部分はA1セルの年と月を使うなら
B1セルに=IF(A1=DATE(YEAR(A1),MONTH(A1)+1,0),"月末","")
と入れて下方向に式を複写する。
これもエクセル関数の本を勉強すれば、本に書いてある手法ですよ。

A列     B列
2011/8/1
2011/8/30
2011/8/31月末
2011/9/30月末
(注)エクセルの日付シリアル値について知らないのでないかとおもう。Googleででも、「日付シリアル値」で照会し勉強のこと。非常に大切なことです。
もしA列に文字列日付ででも入っていると、簡単にはいかないし、実例の説明でもないと回答できない。
    • good
    • 0
この回答へのお礼

ありがとうございます。
No.4、No.5、No.6などの方法が、あらゆる年のどの月末にもユニバーサルに使えて便利ですので、それらを使わせて頂くことにしました。

お礼日時:2011/08/01 21:35

ifについては使えると仮定しまして、



式の中で、
月末日を取得してその結果と日付がイコールであれば月末と判定し、ある言葉を表示する
という流れになるかと思います。

同じ式の中で作ると難しいようであれば、作業用列をひとつ作って、
そこに月末日を表示して、日付セルと比較すればわかりやすいかと思います。
    • good
    • 0

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

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