[[20060714095031]] 『カレンダー』(みど) ページの最後に飛ぶ

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

 

『カレンダー』(みど)
数ヶ月に亘るカレンダを作成しています。初日(A1セル)だけ年月日を入力し、あとは書式(d)計算式(A1+1)のパターンでコピーして作りました。各月の1日(ついたち)だけ月日表示させたいのですが、いちいち書式(m/d)を設定しなくても、計算式でうまくやる方法は無いでしょうか。

 A2=TEXT($A$1+ROW(A1),IF(DAY($A$1+ROW(A1))=1,"m/d","d"))
 でどうでしょうか?
 (ROUGE)

翌月も翌々月も2月になってしまうのですが・・・(みど)

 ごめんなさい。最初に提示した数式はまずかったので、更新しています。
 再度お試しください。
 (ROUGE)

やっぱりうまく行きませんが、何方かもう少し、解説いただけないでしょうか。(みど)

 何故上手く行かないのかよく分かりませんが
 (私のパソコンでは上手くいってますが
   もしかして、列方向にコピーするのかな?)
 (ROUGE)さんに成り代わって、ちょっと式の説明を・・・。

 $A$1+ROW(A1)
    ROW(A1)は、セルA1の行は何行目ですか?→1
    下にコピーすると、ROW(A2)となり   →2 ですので
    A1の値に、A2なら1 A2なら2 と順番に足していってます。

 IF(DAY($A$1+ROW(A1))=1,"m/d","d")
    DAY($A$1+ROW(A1))の括弧の中は 上で説明した日付と同じ日付です。
    A2ならA1に1 A3ならA1に2・・・と足した日付です。
    DAY(日付)=1 は、日付の日にちは1ですか?→(そうです)or(違います)
        ○○年△△月□□日の□□の部分を取り出して、1かどうか判断します。
    IF(条件「日付の日にちは1ですか?」,真「"m/d"」,偽「"d"」)なので
    日付が1が真=日付が1(そうです)なら "m/d"
            が偽=1でない(違います)なら  "d"  を選びます。

 一番大きな(最初に出てくる)TEXT(値,表示形式)の“表示形式”の所に
 IF関数の結果が適用されます。
     1日なら    TEXT(日付,"m/d")
  1日でないなら TEXT(日付,"d")       です。

 ・・・・ですが、分かりますかね?

 ROW関数を使っているので、縦方向にコピーした時に
 思った通りの表示になると思います。
 「単純に縦方向とか横方向とかじゃない」なら
 A2=TEXT($A$1+ROW(A1),IF(DAY($A$1+ROW(A1))=1,"m/d","d"))
         ^^^^^^^^^^^^ここと  ^^^^^^^^^^^^ここ
 日付の所に、今入っている式を入れてみてください。

 「そんな理由じゃないみたい」なら、どの様にうまくいかないのか
 (どんな結果が表示されるのか、どこのセルにいれて
 どの様にコピーしているのか・等)書いてみてください。
 なにか分かるかもしれません。

 (HANA)


丁寧な解説ありがとうございました。縦横方向の問題でした。縦方向にコピーしたらうまくいきました。カレンダと書きましたが、中身は日程表で、ほとんどの場合横書きなので、疑わずに横方向にコピーしてました。関数の意味がわかっていないと答えだけ聞いてもダメですね。で、横にコピーしたいときには、(何列目を返してくれる関数がわからないんですが)どうしたら良いんでしょうか? また、日付データとして扱いたい(別の日付セルとの差を取って日数を計算したり、参照して"aaa"書式で曜日を表示させたりしたい)のですが、これは無理でしょうか。(みど)

 1行目の書式をdにしておいて
 B1に =IF(DAY($A$1+COLUMN(A1))=1,TEXT($A$1+COLUMN(A1),"m/d"),$A$1+COLUMN(A1))
として右にコピーではどうでしょう?
 参照する際には =--B1 のようにして、文字列になっている各月初日のデータも数値に
戻してあげればよさそうです〜
 ROW()が行、COLUMN()が列の番号を返す関数です。エクセルのヘルプも是非ご覧くださいね^^
(かなれっと)

 書式のdは先にセルに設定しておけば良かったんですね。
 (値にしただけでは使えないのでどうしようかと思ってました。)

 それにしても
 TEXT(日付,"m/d")だと 表示されている以外に年が残っている
 (値にしただけで日付として使える)のに
 TEXT(日付,"d")とすると、表示されているだけの文字になって
 年月が残っていないのは 不公平に思えるのですが
 ・・・・そう言うものなんですかね。

 (HANA)

 To HANAさん 
 >TEXT(日付,"m/d")だと 表示されている以外に年が残っている・・・
2005/7/18 で試して下さい。
7/18と入力したら2006/7/18と勝手に判断するのと同様だと考えます。
(sin)
チョッと、読み違えたかも知れません。その際は、ご容赦を。
ただ、当年ならいいのですが、過去や将来の場合の事もありますので・・・
追記しました。


 あぁ、「残っている」のではなく、
 勝手に「今年の年を付加している」 ってことですね。
 たしかに、年が変わった直ぐに前の月の日にちを入れようと思ったら
 勝手に今年の年になるので 年から入れなくてはならず面倒な
 思いをした記憶があります。
 了解です。

 なら、"m/d"で表示した所を値に直す際には
 (2006/12/31の次の日が2006/1/1その次が2007/1/2になりました。)
 前のセルから年を引っ張ってくるか
 どこかに年を入れるセルをつくるか・・・。

 途中で年をまたぐ事があるなら、作業行を作って 表示を変えるだけの行(をいつも表示)
 計算に使うには作業行から・・・という方法を採るのが安全かもしれないですね。

 (HANA)


 お二方の仰るとおりですね^^;
 フォローありがとうございました m(_ _;)m       (かなれっと)
 ☆ 曜日データも連続するなら、そちらを =$A1+COLUMN(A1) としておけば、日数計算等にも使いやすいのではないでしょうか〜

 それですよ!それ。>(かなれっと)さん

 (曜日データをどこで使うか分かりませんが、カレンダーに合わせて表示するとして)
     A1=IF(DAY(A2)=1,TEXT(A2,"m/d"),A2)
     A2=最初の日付を入力  B2=$A2+COLUMN(A2)
 として1行目の書式設定をd
      2行目の書式設定をaaa
 計算に使うのは2行目・・・・ですね。

 (HANA)


いろいろとアドバイスありがとうございました。とりあえずイメージ通りのものが出来たのですが、表を加工する必要が生じ、列を挿入、追加して行ったら崩れてしまいました。考えてみれば、列番号を計算に使用しているので当然ですが、やはりこれでは具合が悪く、やむなくこの計算式は断念することにしました。しかし大変勉強になりました。ありがとうございました。ちなみにヘルプについてですが、ROW()が「行番号」で検索して出てきたので、「列番号」で検索したのですが、COLUMN()は出てきませんで、質問させて頂いた次第です。初心者にとってはヘルプを使いこなすにもハードルがあります。長い目で見てやってください。(みど)

 簡単な説明しかできないので、詳細説明はヘルプにお任せ〜という意味でした^^;
 ヘルプでわかりませんか?というように聞こえて(読めて)しまっていたならごめんなさい。
 お詫びになるかは?ですが、私がヘルプを読むときは、バージョンにもよりますが、
関連項目 や 参照 といった部分をクリックすると、関連する関数の一覧が出てきますので、
そちらも合わせて読むようにしています。参考になれば幸いです。  (かなれっと)
 ☆また誤解されそうな表現だったかもしれません(汗) ヘルプ使いにくいですよね〜
   と賛同、かつ対策として上記のようにしてまする〜ということで。。。 

親切なアドバイスありがとうございます。当方、英語も苦手なもので、行/列をロー/カラムと言うことも、全然知りませんでした。まだまだ修行です。別の人に関数名−読み方−語源−説明の一覧が載っている他所のサイトを教えてもらったので、こちらでも勉強します。(みど)

コメント返信:

[ 一覧(最新更新順) ]


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