• ベストアンサー

エクセル2000で出勤簿の表示形式について

長文ですがよろしくお願いします。20日〆のカレンダー形式の出勤簿を作成しています。例えば8月分だとA1セルに7/21(木)、B1に22(金)・・G1に27(水)、A3に28(木)・・と7日間を同一行の7列に入力します。この中で21日と月初めの1日の表示は月/日(曜日)としたいのです。今はユーザー定義で21日のセルにm”/”d”(”aaa”)”の表示形式を、22日にはd”(”aaa”)”を入れ更新する度に23日以降にドラッグして後で1日のセルだけ21日の書式のみをコピーしています。1人分だけならこれでもいいのですが、ページ1として元データを作って約100名分のページを$A$1などの数式で自動反映していて、30日の月や31日の月があるため1日の位置がずれ、自動反映のページには7/31(日)、1(月)と表示されてしまい、今は結局1つ1つコピーし直していて自動反映の意味がありません。何か良い方法があれば教えていただけたら幸いです。よろしくお願いします。Windows98使用です。

質問者が選んだベストアンサー

  • ベストアンサー
  • nobuendo
  • ベストアンサー率47% (182/384)
回答No.6

ANo.4まで完成したものを、変更するかたちで説明します。 B3は、=DATE($A$1,$C$1,1) に変更。 C5からG5は、C3からG3をコピーする。 C5は、=B5+1 D5は、=C5+1 E5は、=D5+1 F5は、=E5+1 G5は、=F5+1 と式が入ります。 B11を、=IF(DAY(H9+1)=29,H9+1,"") に変更。 C11を、=IF(B11="","",IF(DAY(B11+1)=30,B11+1,"")) に変更。 D11を、=IF(C11="","",IF(DAY(C11+1)=31,C11+1,"")) に変更。 これでどうでしょう。

mayaweller
質問者

お礼

凄いです、バッチリです。関数を使いこなせたらこんなに便利なんですね~。自分で作れるようになったらいいのですが・・とりあえずこれを機会に色々試してみます。何度もお時間割いてくださって有り難うございました!またよろしくお願いいたします。

その他の回答 (5)

回答No.5

ANo.1です。 回答が遅くなって済みません。 すでに既出の回答で解決しているようなので、蛇足ですが、 ANo.1の回答で、#value!エラーになるとのこと。 A1セルの入力内容はどうなっていますでしょう? 文字列で入力していませんか? 例えば、7月21日とか全角になっているとか。 一度A1セルの内容をクリアして、書式を「標準」か、「日付」にして、「2005/7/21」と入力していただければ、エラーにならないと思いますが。 私の説明不足で、すみません。

mayaweller
質問者

お礼

ご丁寧にお返事を有り難うございます。実際はA1入力ではないので式を変えないといけなかったのですが、それを間違っていたようです。ただ、出勤簿の形が7日毎に下段に作らなければならないので、この方法だと週ごとに式をやりかえる手間から考えてNO.3の内容でやってみようと思います。N0.1の内容も活かされてとても助かりました。有り難うございます。またよろしくお願いします。

  • nobuendo
  • ベストアンサー率47% (182/384)
回答No.4

レイアウト的に変かも知れませんが、解りやすく説明する為、ANo.3をベースに説明します。 A1に、=A2+1988 と式を入力します。 A2を、和暦の年の入力欄とします。(今年なら 17) A3には、="平成"&A2&"年"&C1&"月分" と式を入力します。 B3は、貴方の言われるように =DATE($A$1,$C$1-1,21)に変更。 そして、A3からH11(日付のすぐ下が入力セルならH12まで)に印刷範囲指定をしておきます。 A1、A3には、セル保護をかけます。 A1は、非表示でもかまいません。 尚、年の入力を西暦にするなら、A1が入力セルとなり、 A2には、=A1-1988 の式を入力することになります。 こんなことでよろしいでしょうか。 余計なお世話かも知れませんが、この表を不特定多数の方が使用(入力から印刷まで)するのか、管理者に限定されるのかによって、間違いが起こらないように仕組むレベルが変わってきます。 不特定多数の方が使用するなら、入力できるセルを色分けし、変更不可のセルには保護を掛け、全シートに印刷範囲を正しく設定し、且つ正しく印刷されるように用紙設定等の印刷設定をしておくなど、細かな配慮が必要となってきます。  

mayaweller
質問者

お礼

何度も有り難うございます。今必死に作成中です。取扱うのは原則私だけなので大丈夫かと思いますが、何かの時に混乱しないように明確にしておくようにします。 もう一つだけ我侭言わせていただけるなら、2名分だけ末締めの出勤簿がありまして、最後の29日~31日を他の20〆のように2、4、6、9、11月毎に自動で入力されるようにしたいのですが、数式はどうなるのでしょうか?20〆のに手を加えて見たりしていますが、翌月の1日までが表示されてしまったりで悪戦苦闘しています。すみません、よろしくお願いします。

  • nobuendo
  • ベストアンサー率47% (182/384)
回答No.3

ANo.2の変更案をお知らせします。(関数式の入力が少し簡単になります。) ただし、変更しなくとも支障はありませんが。 ANo.1の方のTEXT関数を、C5からF5に応用します。 C5を =IF(DAY(B5+1)=29,B5+1,TEXT(B5+1,"m/d(aaa)")) に変更します。 D5を =IF(OR(DAY(B5+2)=30,DAY(B5+2)=2),B5+2,TEXT(B5+2,"m/d(aaa)")) に変更します。 E5を =IF(OR(DAY(B5+3)=31,OR(DAY(B5+3)=2,DAY(B5+3)=3)),B5+3,TEXT(B5+3,"m/d(aaa)")) に変更します。 F5を =IF(DAY(B5+4)<>1,B5+4,TEXT(B5+4,"m/d(aaa)")) に変更します。 上記以外は、ANo.2の通りです。 エクセルを立ち上げ、このページから、それぞれの関数式を該当セルにコピーすれば、簡単且つ間違えなく作成できますので試してみて下さい。

mayaweller
質問者

お礼

凄いです、感動です。こういうのを求めてました。ただもう一つ甘えさせていただけるなら、うちの年月表示が、例で言うとH2のセル内に「平成17年8月分」となってまして、7/21~8/20であれば「8月分」なんです。これは$C$-1とすれば解決しそうですが、せっかくならA1の2005を平成17年表示にして、この関数を生かす方法はありますか?DATEVALUEなど試したけどよく解らなくてすみません。もし教えていただけたら幸いです。なければA1の行を非表示で印刷して使おうと思います。

  • nobuendo
  • ベストアンサー率47% (182/384)
回答No.2

具体例を記述します。 A1に年(今年なら2005)、C1に月を入力するセルとします。 B3を21日として横に一週間、次の週は、一行あけてB5が28日、次の週も一行ずつあけて表記する例とします。 B3の表示形式は、当然 m”/”d”(”aaa”)”です。しかし、それ以外の日付の入るセル(ここではD11まで)は、すべて d”(”aaa”)”に設定します。 次に、各セルに入力する関数式を表記します。 B3には、=DATE($A$1,$C$1,21) C3には、=B3+1 D3には、=C3+1 と言うように、この行は規則正しく入力します。 次のB5からは、やや複雑ですが、一字一句間違えてはいけません。 B5は、=H3+1  C5は、=IF(DAY(B5+1)=29,B5+1,CONCATENATE($C$1+1,"/",1,CHOOSE(WEEKDAY(B5+1),"(日)","(月)","(火)","(水)","(木)","(金)","(土)"))) D5は、=IF(OR(DAY(B5+2)=30,DAY(B5+2)=2),B5+2,CONCATENATE($C$1+1,"/",1,CHOOSE(WEEKDAY(B5+2),"(日)","(月)","(火)","(水)","(木)","(金)","(土)"))) E5は、=IF(OR(DAY(B5+3)=31,OR(DAY(B5+3)=2,DAY(B5+3)=3)),B5+3,CONCATENATE($C$1+1,"/",1,CHOOSE(WEEKDAY(B5+3),"(日)","(月)","(火)","(水)","(木)","(金)","(土)"))) F5は、=IF(DAY(B5+4)=1,CONCATENATE(IF($C$1=12,1,$C$1+1),"/",1,CHOOSE(WEEKDAY(B5+4),"(日)","(月)","(火)","(水)","(木)","(金)","(土)")),B5+4) G5は、=B5+5 H5は、=G5+1 次のB7、B9の列は規則正しく入力します。 B7は、=H5+1 C7は、=B7+1 D7は、=C7+1 ・・・という具合です。 B9列は、B7列をそっくりコピーしてください。 最後にB11列目です。 B11は、=IF(DAY(H9)<20,H9+1,"") C11は、=IF(B11="","",IF(DAY(B11)>=20,"",B11+1)) D11は、=IF(C11="","",IF(DAY(C11)>=20,"",C11+1)) 関数式入力はここまでです。 B3からD11までのデータは、そっくりそのまま、どこへコピー、移動しても相対関係は崩れませんので、大丈夫ですが、A1とC1の年、月の入力セルを違うセルに変更する場合は、リンクする関数式のあるセル(B3,C5,D5,E5,F5)の該当部分を変更してください。 年、月を入力する、A1、C1以外、まったく変更することなく自動反映されます。もちろん、うるう年も大丈夫。 B3~D11の各セルに保護を掛けておけば、安心です。

回答No.1

題意通りではないかもしれませんが、 A1セルにその週の最初の日付を入力します。 で、B1セルに次の式を入力し、G2セルまで ヨコにコピーします。 =IF((DAY($A$1+COLUMN(A1)-1)=21)+(DAY($A$1+COLUMN(A1)-1)=1),TEXT($A$1+COLUMN(A1)-1,"m/d(aaa)"),TEXT($A$1+COLUMN(A1)-1,"dd(aaa)")) 式が複雑で済みません。 表示にはTEXT関数を使っています。該当する日が1か21の場合にのみ"m/d(aaa)"を使い、それ以外の日は "d(aaa)"の書式にしてあります。 COLUMN(A1)-1の部分はA1セルに入れた日付に対して、ヨコに+1ずつするために使っています。 必ず A1セルに週初めの日付を入れなければなりませんが、題意の自動書式は可能だと思いますので、 参考になりましたら。

mayaweller
質問者

お礼

早々の回答ありがとうございます。関数とかよく解らないのですが、試しに早速やってみました。でも#value!の表示が出ます。となりにコピーしてみても同じでした。もしや最後のはdd(aaa)ではなくd(aaa)では?と変えてみたけど、やはり駄目でした。=のボタンを開いてみると、論理式~偽の場合、全て#value!とありました。何度見直しても入力漏れは無いようなのですが、すみません・・何が違うのか解りません。

関連するQ&A

  • エクセル 表示形式について

    先程も実は質問させていただいたのですが、似たような質問を再度させてください。 日付    曜日 2006/4/1    土 とします。 日付は表示形式で「d」にしました。 曜日は「=A1(2006/4/1のセル)」のようにして、更に「aaa」の表示形式を付けました。 そこで、また今度は条件書式を付けたいのです。 「aaa」と掛けた月火水木・・・に「日」は赤にするという条件書式をつけたいのです。 条件はどのようになるのでしょう。 曜日を文字列で入れていたときには 「セルの値が次の値に等しいときに赤にする」のようにして、書式を赤字に設定していました。 でも曜日をaaaと表示形式かけた時にはどうなるんですか。数式は「=A1」とかですし。。。 どなたか教えてください!><

  • エクセル2000 表示形式、条件付書式

    年間予定表をエクセル2000で作っています。 2005年5月1日を表示形式のユーザー定義でd(aaa)として、A1のセルに1(日)と表示させています。 ここで条件付書式を利用して、土日のセルのみ色を付けたいのですが、どのような設定になりますか? また、B1、C1のセルも土日のあたる場合に色を付けたいのです。 よろしくご指導ください。

  • Excelの表示形式について

    <例> セルA1に『2/10』と入力する→Enterで確定すると『2月10日』と表示される→セルA1をDeleteで削除→セルA1に『2』と入力すると『1月2日』と表示される。 Excelの特徴で、自動的に表示形式が日付に変わってしまうものだと思いますが、コレを初期設定の段階で常に表示形式を標準にする方法はありますか? たとえば 『2/10』と入力したら『2/10』とそのまま表示したい。 『2/10』と入力して日付扱いになっていたセルに、あとから数値として入力する必要が発生した。 などの場合、不便です。 よろしくご回答のほどお願いいたします。 (バージョンは2002または2003)

  • Excelのセルに入力した日付の表示形式が変更できない。

    いつもお世話になっています。 自分でもいろいろがんばったのですが、どうにも出来なくて 困ってしまい、どなたかのお力をお借りできればと思って 投稿しました。 Excel2003で、A1列に「4月1日(日)」と入力しました。 続けて、A2列に「4月2日(月)」と入力しました。 この2つのセルを選択して、フィルハンドルを使って 4月30日までになるようにやってみました。 すると、それまで、「4月1日(日)」という表示だったのが 「2007/4/1(日)」というように、「YY/MM/DD」の ような表示になってしまいました。 (すべてのセルがそうなってしまいました。) セルの書式設定で、「M月D日」くらいしかなく、曜日まで 設定する項目がありませんでした。 仕方なく、「M月D日」で表示しようと思い、セルの書式設定を 変更したのですが、変更がまったく反映されず、「2007/4/1(日)」 のままです。 どうすれば、「4月1日(日)」のように表示することが できるのでしょうか? ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • Excelの表示形式について

    Excelの表示形式について。。Excel2007ですが、セルの書式設定の表示形式が初期状態で、必ずユ-ザ-定義になっており、6-1と入力すると必ず6月1日と表示されます。またそのセルを標準に変更して6-1と入れても変わりません。ユ-ザ-定義のまま変更してません。どうしてでしょうか?仕方なく1個1個文字列に変更しながら打ち込んでますがなぜ、初期状態で標準にならなくなったのでしょうか? なにか自動設定になってるのでしょうか?どなたかわかる方教えてください。お願いします。

  • EXCELで表示形式について。。。

    EXCELで表示形式でユーザー定義を使用した時に、 その値で検索したいのですが、どうしたらよいのでしょうか? Aの列に表示形式をユーザー定義で"A-"##にしました。 セルには数字のみ入力しました。見えているのはA-20とかA-15とかです。 その値でVLOOKUPの関数で検索したいのですが、できますか? ユーザー定義ではA~Zを使用してます。 セルには10~55までの数字を入力して、表になってます。 シートをコピーして形式を選択して貼り付けしてもセルに入力した数字のみで、 ユーザー定義で表示している"A-"の部分はコピーできません。 もう一度、入力しなおしたくはないので、お願いします。

  • 日付と条件付き書式

    Excelで質問です。 セルA1に「2014/8/1」と入力し、表示形式を「m月d日(aaa)」に変更し「8月1日(金)」と表示されます。 それを1か月分下にオートフィルします。 そこで、土曜日はセルの塗りつぶしを「青」、日曜日を「赤」に条件付き書式で設定をしたいのですが、表示形式を「m月d日(aaa)」に変更したものを判断させるにはどうすればよいでしょう? 日付と曜日を分ければかんたんなのですが、上記の書式は崩せません。

  • Excelでの日付の表示

    同じシートに家計簿を作成するとします。 40行で1頁とし、例えば、A1セルに3月10日として、1~40迄をコピーして、A41セルに3月11日と自動に日付が変わるようにするにはどうしたらいいですか?マクロは使えませんので、関数でお願いします。

  • EXCELで日付の表示

    お世話になります。 年月日のデータが3つのセルに分かれて入っており、   A   B   C   D   2005   5    1 Dのセルにつなげた日付表示をしたいのですが、 どのようにしたらよいのでしょうか。 ちなみに、セルDに「=CONCATENATE(A1,B1,C1)」と入れたら、 「200551」と表示されました。セルの表示形式を 「yyyy/m/d」としたのですが、変化なく、 セルEに「=TEXT(D1,"0!/00!/00")」と入れたら、 「20/05/51」となってしまいました。 もとデータのB列C列の表示形式を「00」にしてみましたが、 表示は「05」「01」となるのですが、セルD、Eに反映されないのです。 何か良い方法がありましたら、 教えてください。

  • エクセル 表示形式って・・・コレできますか?

    スケジュール表を作成中です。 例えば日付の 2006/4/1 のセルがA1だったとしたら 下のようになりますよね。 日付    曜日 2006/4/1  =A1 そして曜日のセルに表示形式を aaa で付ければ月火水・・となるのは、解っているのです。 ですが! 日付のセルをただ単に「1 2 3 4・・・」と数字だけにしたいのです。 そうすると表示形式はどうつければいいのでしょうか。 ただの1234だけど、ちゃんと「日付」と認識して欲しいのです。 じゃないと、今度曜日が月火水・・・って認識できないですよね!? 不可能でしょうか。 どなたか教えてください><