• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2010 出勤簿の曜日自動入力について)

Excel2010 出勤簿の曜日自動入力について

このQ&Aのポイント
  • Excelで前月21日~当月20日までの出勤簿を作成しています。曜日の自動入力についてご教授をお願いします。
  • A1セルに年、A3セルに月の数値を入力し、A8セルからA18セルまでの日にちとA19セルからA38セルまでの日にちを予め入力してあります。
  • B8セルからB18セルには、A1に入力した年とA3に入力した”前月”の21日~31日までの曜日を表示し、B19セルからB38セルには、A1に入力した年とA3に入力した”当月”の1日~20日までの曜日を表示する関数が欲しいです。*A3セルが1(1月)の場合、B8セルからB18セルには昨年の12月の曜日が表示されます。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

> 曜日の表示ですが、セルサイズの関係で「月」など一文字漢字の表示にしたいのですが可能でございましょうか。 最後の "aaaa" を "aaa" に変更してください。

tktk1980
質問者

お礼

ご回答ありがとうございます。 解決いたしました!。 早速のご返答をいただきまして、重ね重ね有難うございました。

その他の回答 (6)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.7

添附圖參照(Excel 2019) 1.d に書式設定し、且つ、次式を入力したセル A8 をズズーッと  ̄ ̄18行目迄オートフィル  ̄ ̄=IF(MONTH(DATE(A$1,A$3-1,ROW(A21)))=A$3,"",DATE(A$1,A$3-1,ROW(A21))) 2.d に書式設定し、且つ、式 =DATE(A$1,A$3,ROW(A1)) を  ̄ ̄入力したセル A19 をズズーッと 38行目迄オートフィル 3.aaa に書式設定し、且つ、式 =DATE(A$1,A$3,ROW(A1))  ̄ ̄を入力したセル B8 にフィルハンドルを「エイヤッ!」とダブ  ̄ ̄ルクリック

tktk1980
質問者

お礼

ご返答ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

#2です。 混乱して、間違っている箇所が見つかり、訂正します。 DAY関数を使うのは、本件では、乱するので、それをやめます。 そして B8に 式 =DATE($A$1,$A$3,21)を入れます。 そしてB9には =E8+1 を入れて、B37まで式を複写します。 表示形式をユーザー定義で、「日だけ」にします(ddと設定します)。 C列C18の式は =TEXT(B8,"aaa") と入れて下方向に式を複写します。 11月20日や、12月の1日などに11,12が出ず、わかりにくいとは思います。A3にスタート月を入れる仕組みのためです。 ==== 改めて、下記のやり方も提案します。 これが一番簡単なやり方でしょう。 C8に「土」と入れます(これは人間がカレンダーを見て、11月20日が土曜日を知って手入力します。オートフィルで、B37まで、右下にでる+ハンドルを引っ張ります。これで曜日が正しく出ます。

tktk1980
質問者

お礼

ご返答ありがとうございます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

No1,No4の蛇足です A列の日にちですが 日にちの無いセルを非表示にする場合 29日のセル(A16)に =IF(DAY(DATE($A$1,$A$3-1,ROW(29:29)))<>ROW(29:29),"",ROW(29:29)) として 30日(A17)と31日(A18)のセルにコピーすると該当月は非表示になります。 No1の式では日にちの無い日がある場合次の1日の曜日が表示されます。 Date(2020,11,31)はエラーにならず2020/12/1と認識されるためです。 日にちの無い日をカットして末日から連続して1日が始まる場合 21日のセル(A8)に =IF(DATE($A$1,$A$3,20)<DATE($A$1,$A$3-1,ROW(21:21)),"",DAY(DATE($A$1,$A$3-1,ROW(21:21)))) としてA38までコピーすると連続した日にちになり最後20日を超えた日は空白になります。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2です。すみません。 日付の関数式を書き漏らしました。 私の考えた方法では、日の数値は、手入力ではありません。 関数の結果の数値です。 B8の式 =DAY(DATE($A$1,$A$3,21)) B9の式 =DAY(DATE($A$1,$A$3,B8+1)) B10以下は、B9の式を複写します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

A1=2020(年の数値) A3=11(月の数値) B11=関数 =DAY(DATE($A$1,$A$3,21)) B12=関数 =DAY(DATE($A$1,$A$3,B8+1)) 書式は数値 (日付の書式のままにするな) B12の式をB13:B37まで式を複写。(月により38行までとなる) C8=関数 =TEXT(DATE($A$1,$A$3,B8),"aaa") "aaa"は”aaaa"などお好みで。 C9=関数 =TEXT(DATE($A$1,$A$3,B8+1),"aaa") C10:C37はC9の式を式複写。月によっては、前半( 月)が31日の 月などはC38までの複写になる。 ーー 私見では、表の設計がまずいと思うが? 上記のように、複雑になる。 (1)短の月と長の月で、式複写の下限が別になったりする (2)式が2種類になる(初期日とその後続日で) 私の式より、良い(すっきりした)ものが現れれば、脱帽するが。 C9の式で+1にしているのは、月末ー>月初でスムーズに行くようにしている。エクセルは、値が11月31日の場合は12月1日として見てくれる、ありがたき仕組みであるのを利用。エクセルが日付シリアル値の仕組を使っていることのお陰?

tktk1980
質問者

お礼

ご返答ありがとうございます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

=IF(A8="","",TEXT(IF(A8<21,DATE($A$1,$A$3,A8),DATE($A$1,$A$3-1,A8)),"aaaa")) で試してみてください。ただし、日付のセルにその月に存在しない日は表示しないようにしておいてください。

tktk1980
質問者

補足

早速のご返答ありがとうございます。 曜日の表示ですが、セルサイズの関係で「月」など一文字漢字の表示にしたいのですが可能でございましょうか。 例:月曜日→月 *ご回答いただきました関数を試したのですが曜日表示が「月曜日」等の3文字表示となります。 私の質問時の説明不足でお手数をおかけし申し訳ございませんが何卒よろしくお願いいたします。