[[20040917101608]] 『エラー値を出さずにするには?』(みち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エラー値を出さずにするには?』(みち)

日付ちついてなんですけど、年と月を変えるだけで、日付・曜日が出てくるようにしたんです。
たとえば、C1に年、C2に月、C5:C35に日付

    =DATE($C$1,$C$2,1)
    =IF(MONTH($C$5)=MONTH($C$5+ROW()-ROW($C$5)),$C$5+ROW()-ROW($C$5),"")
てな感じです。
その時に、年と月を入力してない状態だと、エラー値がでてくるので、入力してなくてもエラー値がでてこない方法を教えてください!!
あと、年・月のセルに、「年」「月」と入力しても、数式がちゃんとでてくるようにもしたいんです。
おしえてください☆


 C5に=IF(COUNT(C1:C2)=2,DATE(C1,C2,1),"")、
 C6に=IF(C5<>"",IF(C$2=MONTH(C5+1),C5+1,""),"")として、C6を下にフィルドラッグ。
 ということでは、どうでしょう?                    (LOOKUP)


 衝突しました。
 C5に=IF($C$1*$C$2=0,"",DATE($C$1,$C$2,ROWS($5:5))) 以下コピー。
 ( ̄0 ̄;アッ LOOKUPさんは、翌月になったときの空白処理もされてるんですね。
 さすがです。m(._.)m 
 (川野鮎太郎)


 2回衝突です・・・。

 C5が1日目でC35が31日目を表しているんですよね?
 だったらC6に =IF($C$2=MONTH(C5+1),C5+1,"") で下にコピーでも同じかと思います。
 結局はひとつずつしか値は増えていかないと思うので。
 あとC5の月はC2を元にしているのでMONTH($C$5)はC2と同じになりますよね?
 余計なお世話だったらごめんなさい。

 本題ですが・・・
 ・入力してなくてもエラー値がでてこない方法
   これはIF文を使い =IF(OR($C$1="",$C$2=""),"",日付の式) とやればOKだと思います。
  と思ったんですが、(LOOKUP)さんの式の方が簡潔でいいですね(^^)

 ・年・月のセルに、「年」「月」と入力しても、数式がちゃんとでてくるようにもしたい
  これは表示形式で対応するといいと思います。
  表示形式を「ユーザー定義」でC1は#"年"、C2は#"月"とします。
 (gloomy)


「みち」です。皆さんありがとうごさいます!!やってみます。こうやって解決していくと楽しいですね。頑張ります!


 >年・月のセルに、「年」「月」と入力しても、数式がちゃんとでてくるようにもしたいんです。
 の意味が判りませんでした。gloomyさんのおっしゃるものがよいのですが、C1に2004年、
 C2に10月などと漢字を含めて入力した場合にも対応するものは、C5の数式を
 =IF(COUNT(C1:C2)=2,--(C1&"/"&C2),IF(COUNT(C1&C2),--(C1&C2),""))のようにすることで、
 よいと思います。
 C6以下には、=IF(C5<>"",IF(MONTH(C5)=MONTH(C5+1),C5+1,""),"")を複製です。   (LOOKUP)
 =IF(DAY(SUM(C5,1))>1,C5+1,"")とするのもよいようです。


分かりました!!やってみます☆
もう一つ質 問いいですか?
日付のエラー値は皆さんのおかげで出なくなったんですけど、(ありがとうございます!)曜日のセルに、エラー値をださずにしたいんです。
で、IF関数をつかって、D5に
=IF(TEXT(WEEKDAY(C5),"aaa"),WEEKDAY(C5),"aaa","")
と入力したんですけど・・・・・
エラー値がきえないんです。
おしえてください! (みち)


 D5に=TEXT(C5,"aaa")として、これを下にフィルドラッグしますと、
 曜日が、文字列で該当セルに戻ります。
                    
 D5以下のセルの書式設定、表示形式、ユーザー定義でaaaとしておきますと、D5の数式は、単に
 =C5でしょう? 

 また、C列の日付の表示形式をd (aaa)としておきますと、曜日も
 同時に表示できますので、D列の欄は、不要となります。           (LOOKUP)


 またまた衝突・・・。ややこしくなるかもしれませんが一応。

 >=IF(TEXT(WEEKDAY(C5),"aaa"),WEEKDAY(C5),"aaa","")
 これってIF文自体が間違えているのでは?
 IF(条件式,真の場合,偽の場合)という式になるはずですから引数が1つ多い状態になっていると思います。
 式自体がエラーになってしまうと思うのですが・・・。(アシスタントから何も言われてないですか?)
 あとTEXT(WEEKDAY(C5),"aaa")は条件式には使えません。
 文字列ですので数値とは判断できないのです。ですので#VALUE!と表示されるのです。

 =IF(C5="","",C5)とし、表示形式をaaaとしてみてはいかがでしょうか?
 みちさんの式をそのまま使う場合は
 =IF(C5="","",TEXT(C5,"aaa"))
 でいけると思います。
 (gloomy)
 一部式を訂正いたしました。


なるほど・・・・!
たしかにgloomyさんの言うとおり、#VALUE!となりました。
LOOKUPさんの場合は、日付と一緒に曜日もでてくるということですね?
皆さんありがとうございます。
やってみますね。
                                                            (みち)


曜日も年・月を入力しても、うまくいきました!!みなさんありがとうございます。
またまた質問ですけど、LOOKUPさんの、C1に2004年、C2に10月と漢字を含めて入力した場合の数式で、「--」や、&が式の中に入ってますけど、意味はなんですか?
式の理解がしたいので、教えてください! (みち)


 >「--」や、&が式の中に入ってますけど、意味はなんですか?式の理解がしたいので、
 >教えてください 

 任意のセルに2004/9と入力すると、Sep-04。2004年9月と入力すると、2004年9月と表示し、
 数式バーを見ますと、両方とも2004/9/1と表示されるでしょう?
 年月だけ上の方法で入力しますと、その年月の1日日付のシリアル値がセルに入りますね。

 これを数式で実行してみましょう。

 1.A1に2004、A2に9。B1に2004年、B2に9月と入力します。
 2.A3に=A1&"/"&A2。&は、との意味です。形が似ているでしょう?A1と/とA2ということです。
 3.B3に=B1&B2。とします。
 4.A4に=--A3。B4に--B3。--は、数値に変換できる文字列を数値に変換する算術演算子です。
   両方とも38231と表示されるでしょう?シリアル値です。
 5.A4:B4を選択し、セルの書式設定、表示形式、分類を日付、種類に1997/3/4を指定すると、
   2004/9/1と表示され、両方とも当該年月の1日日付ということが、判ります。

   A     B
1  2004  2004年
2    9  9月
3 2004/9  2004年9月
4  38231	    38231
   ↓      ↓
  2004/9/1  2004/9/1                          (LOOKUP)


ありがとうがざいます!とても分かりやすかったです。
理解しました。
                                                           (みち)


 問題解決されたようなんですが気になったので・・・。
 LOOKUPさんの"年","月"入力対応の式で
 --(C1&"/"&C2)とありますよね?
 自分はこれを入力した際に、#VALUE!となってしまったのですが・・・。
 LOOKUPさんは問題ありませんでしたか?

 ちなみに自分はWin2000,Excel2000です。
 (gloomy)


 >LOOKUPさんは問題ありませんでしたか?

 記載のとおりです。=--(2004&"/"&9)、=--("2004年"&"9月")ともに38231が戻ります。
 文中のように入力は、--(2004&"/"&9)と=を除いても同様の結果となります。(Excel97 sr2)

 ツール、オプション、移行、シートオプション、計算方法を変更するにチェックしますと、
 そのような動作になるのですが。。                       (LOOKUP)

 連休で返答が遅くなってしまい、申し訳ありませんでした。
 上記の変更を行ったところ、解決しました。
 このような方法もあるんですね。初めて知りました。

 やっぱりまだまだ勉強不足です。ありがとうございました。
 みちさん、スレお借りしてすみませんでした。
 (gloomy)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.