dポイントプレゼントキャンペーン実施中!

月2回(原則7日と22日)、給与があります。

給与日が7日(週末、祝日がかぶるとその前日になる)の場合、
その支払対象期間は先月の16日~月末までです。
(例:給与日が5/7/2012の場合、その支払対象期間は4/16/2012-4/30/2012)

給与日が22日(週末、祝日がかぶるとその前日になる)の場合、
その支払対象期間は当月1日~15日までです。
(例:給与日が5/22/2012の場合、その支払対象期間は5/1/2012-5/15/2012)

そこで、例えば
給与日のセルに5/7/2012(週末にかぶる場合は前日)と入力すると
次のセルに自動で(4/16/2012-4/30/2012)と表示され、
給与日のセルに5/22/2012(週末にかぶる場合は前日)と入力すると
次のセルに自動で(5/1/2012-5/15/2012)と表示されるようにしたいです。

そこで、IF関数を使い、(I1のセルに給与日(5/7/2012)が入力されているとします)

論理式:   DAY(I1)<15
真の場合:  MONTH(I1)-1&"/16/2012-"&DATE(YEAR(I1),MONTH(I1),1)-1
偽の場合:  MONTH(I1)&"/1/2012-"&MONTH(I1)&"/15/2012"

と入力したところ、

偽の場合はよいのですが、真の場合には
4/16/2012-41029 と月末の日付がシリアル値で返ってきてしまいます。

どうしたら、41029が日付表示になってくれるのでしょうか・・。

宜しくお願いいたします。

A 回答 (1件)

TEXT 関数を使えば、シリアル値を文字列に変換できます。


> DATE(YEAR(I1),MONTH(I1),1)-1
この部分を、
> TEXT(DATE(YEAR(I1),MONTH(I1),1)-1, "m/d/yyyy")
にしてください。
    • good
    • 0
この回答へのお礼

できました!!!感動しました。
本当にありがとうございました。

お礼日時:2012/05/02 23:40

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