Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2010)
日付関数についてです
投稿日時: 17/11/23 12:17:35
投稿者: takaisasking

日付関数についてです。
 
@セルB2には以下の数式が入っています。
 =TEXT("2017"&"/"&"11"&"/"&"1","d")
 
以下のセルB3からB32までは
 「=B2+1」・・・「=B31+1」と入っています。
 
問題は、「2017/11/31」はないので
この場合は「空欄」(="")にしたいのですが・・・
 
@の数式に何を加えたらよいでしょうか。
あるいは、「B3」から「B32」のほうに何か加える方法はあるでしょうか。
関数で解決したいのですが。

回答
投稿日時: 17/11/23 13:04:49
投稿者: んなっと

B列の表示形式 ユーザー定義
d
 
B2には
2017/11/1 と入力
 
B3
=B2+1
下方向・↓B32まで
 
B30:B32選択(または30:32行選択)
条件付き書式
数式を使用して〜
=MONTH($B$2)<>MONTH($B30)
書式(F)... 表示形式 ユーザー定義
;;;

回答
投稿日時: 17/11/23 21:05:47
投稿者: んなっと

数式だけだと
 
B列の表示形式 ユーザー定義
d
   
B2には
2017/11/1 と入力
  
B3
=IF(B2="","",IF(MONTH(B2+1)=MONTH(B2),B2+1,""))
下方向・↓B32まで
 
こっちのほうが楽ですね。

回答
投稿日時: 17/11/24 09:07:29
投稿者: WinArrow
投稿者のウェブサイトに移動

別の提案
 
任意のセルに月初の日付を入力しておきます。
説明上セルB1に2017/11/1とします。
セルB2に次の数式を入力
=IF(MONTH(DATE(YEAR($B$1),MONTH($B$1),ROW(A1)))<>MONTH($B$1),"",$B$1+ROW(A1)-1)
 
B2のB32までフィルドラッグします。
 
 

回答
投稿日時: 17/11/24 09:09:53
投稿者: WinArrow
投稿者のウェブサイトに移動

表示形式の説明を追加します。
 
B2〜B32まで、
表示形式を"d"に設定します。

回答
投稿日時: 17/11/24 21:20:57
投稿者: WinArrow
投稿者のウェブサイトに移動

若しかしたら、目視で日付を使うことを日付関数と誤解しているかもしれませんが
 
>=TEXT("2017"&"/"&"11"&"/"&"1","d")
↑は、日付関数ではありません。
 
「日」の部分だけ文字列で取得する文字列関数です。
ですから答えは「1」という文字列です。
客観的には、「日」ではありません。単なる「1」という文字列です。
 
「見た目」と「値」を区別して考えることをお勧めします。
なお、文字列は、見た目と値が同じになります。
 
因みに
日付形式のデータには、2種類の「値」が存在します。
1つは、yyyy/mm/dd形式で数式バーに表示される「値」です。
もう一つは、シリアル値です。
当該セルで表示させるとしたら、表示形式を「標準」に変更してみると分かります。
5桁の数値が表示されます。これがシリアル値です。

投稿日時: 17/11/25 17:07:39
投稿者: takaisasking

んなっとさん、WinArrow、回答していただき、そうもありがとうございました。
 
WinArrowがご指摘の通り、日付関数ではなく単に1から30(31)の連番にすぎませんでした。
 
1〜30(31)の連番にしておいて、
右隣のC列のセルには、「曜日」が出る関数が入っています。
 
31に対してエラーが出た月(2,4,6,9,11)の31を消すことで対処することにしました。
 
今回は、これで閉じさせていただきます。
また、よろしくお願いします。