電子書籍の厳選無料作品が豊富!

質問した内容は以下ですが「ChatGPT-3.5」回答です。
「9月のカレンダーの他」に「出勤日のカレンダー」が
もう一ついるとの回答でしょうか?

質問内容

以下は2023年9月私の勤務シフトですが20日勤務です。
エクセルで、内蔵カレンダーと同期させて、今現在が2023年9月10日
だとすれば、どこかのセルに残りの出勤数を9月の出
勤数は残り13日なので、13と表示させたいのです。
したがって、残りの出勤数をリアルタイムで表示したいのですがどんな
関数を組めばできますか?
エクセルには2023年9月1日~2023年9月30日まで表示させた状態で以
下の出勤日のみをカウントの対象にしたいです。よろしくお願いします。
2023/9/1/(金)
2023/9/2/(土)
2023/9/3/(日)

2023/9/6/(水)
2023/9/7/(木)
2023/9/8/(金)
2023/9/9/(土)

2023/9/12/(火)
2023/9/13/(水)
2023/9/14/(木)
2023/9/15/(金)

2023/9/18/(月)
2023/9/19/(火)
2023/9/20/(水)
2023/9/21/(木)

2023/9/24/(日)
2023/9/25/(月)
2023/9/26/(火)
2023/9/27/(水)

2023/9/30/(土)

以下はChatGPTの回答です。

指定された日付のカレンダーをもとに、Excelで残りの出勤日数をリアルタイムで表示する方法を説明します。指定された日付のカレンダーを考慮して、残りの出勤日数を表示するには、以下の手順を実行します。

A1セルからA30セルに、2023年9月の日付を入力します。A1セルには2023年9月1日から始まり、A30セルには2023年9月30日までの日付を入力します。

B1セルからB30セルに、各日の出勤情報を入力します。指定された出勤日であれば、対応するセルに何らかの情報(たとえば「出勤」など)を入力し、それ以外の日は空白にしてください。したがって、B1からB30までのセルに出勤情報が入力されることになります。

残りの出勤日数を表示するセルを設定します。たとえば、C1セルに以下の数式を入力します:

excel
Copy code
=COUNTIF(A1:A30,">=2023/9/10") - COUNTIF(B1:B30, "出勤")
この数式は、指定されたカレンダーの日付(A1からA30まで)で、2023年9月10日以降の日数をカウントし、その後、B1からB30までのセルで「出勤」というテキストが何回出現するかを引きます。したがって、C1セルには残りの出勤日数が表示されます。

C1セルに上記の数式を入力した後、C1セルには現在の残りの出勤日数が表示されます。Excelファイルを開いた際には、自動的に現在の日付に合わせてC1セルが更新されます。
これにより、指定されたカレンダーに基づいて、現在の日付に合わせて残りの出勤日数をリアルタイムで表示できます。必要に応じてセルの情報を更新してください。

質問者からの補足コメント

  • うーん・・・

    ご回答くださいまして、ありがとうございます。
    詳しくまだやっていないのですが。
    一つカレンダーでできないか検討中です。
    手が空き次第取り掛かります。

      補足日時:2023/09/13 05:23
  • かしこまりました。以下のマクロを作成しました。

    VB.Net
    Sub 残り勤務日数を表示()

    '今日の日付を取得
    Dim today As Date
    today = Date

      補足日時:2023/09/15 06:53
  • うーん・・・

    '勤務日を配列に格納
    Dim workDays As Variant
    workDays = Array("2023-09-01", "2023-09-02", "2023-09-03", "2023-09-06", "2023-09-07", "2023-09-08", "2023-09-09", "2023-09-12", "2023-09-13", "2023-09-14", "2023-09-15", "2023-09-18", "2023-09-19", "2023-09-20", "2023-09-24", "2023-09-25", "2023-09-26", "2023-09-27", "2023-09-30")

      補足日時:2023/09/15 06:53
  • うーん・・・

    '勤務日数を計算
    Dim workDaysCount As Integer
    workDaysCount = workDays.Count

    '残り勤務日数を計算
    Dim remainingDays As Integer
    remainingDays = 20 - workDaysCount

    '残り勤務日数をセルに表示
    Dim targetCell As Range
    Set targetCell = Range("A1")
    targetCell.Value = remainingDays

    End Sub

      補足日時:2023/09/15 06:53

A 回答 (4件)

考え方はいろいろあると思いますが、代表的なものは2つだと思います。



1つ目はご質問者がお示しになったように、当月の出勤日のみを予め列挙する方法です。
画像①をご覧ください。このように予め当月の出勤日を列挙しておけば、画像のように

=COUNTIF($B:$B,">"&TODAY())

という数式を用いることで、当日より後(当日は算入しない)の出勤日数をリアルタイムで簡単に求められます。
しかし、出勤日のみ日付を列挙するのに意外と手間がかったりします。

もう一つの考え方はChatGPTの回答のように、日付は当月の全日付を列挙し、出勤日か否かを別列に表示する方法です。
画像➁をご覧ください。このようなケーズでは、画像のように

=COUNTIFS($B:$B,">"&TODAY(),$C:$C,"出勤")

という数式を用いることで、当日より後(当日は算入しない)の出勤日数をリアルタイムに求められます。

2つ目の方法のメリットは日付はA1に年月を入れることで当月全日付を自動表示させる仕組みにできること、出勤日をプルダウンから選択する仕組みと組合わせることができること
などがあげられます。
「「ChatGPT-3.5」の回答ですが」の回答画像2
    • good
    • 1
この回答へのお礼

ありがとうございました。
ご回答を元に暇暇作成してみます。
Bard GPT で VB を作ってくれましたが
文字列変換がうまくいかず 計算できない状態です。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
使えない状態です。
仕様書作り(プロンプトエンジニア)
めちゃ面倒でした。

お礼日時:2023/09/17 04:26

No.2,3です。



>一つカレンダーでできないか検討中です。

このカレンダーという意味が
【日曜から土曜まで7日間の日付を一行に並べて、これを複数行使って一月の日付を表示する】
というイメージのものなら、お勧めしません。
その方法のメリットは見栄えが良いというだけです。
出勤日入力の操作性の低下、数式が複雑化するというデメリットの方が大きい気がします。
そうではなく、縦一列、あるいは、横一列に日付を列挙したものということなら、No.2の画像②と同じです。
    • good
    • 1

No.2です。

前回回答に補足します。
前回回答の画像、および数式中に登場するB列は中身はシリアル値で、No.1さんのご指摘のように、
>セルの書式設定で曜日付きの書式にしておいて表示する
という方法をとっています。
    • good
    • 1

こんにちは



>「9月のカレンダーの他」に「出勤日のカレンダー」が
>もう一ついるとの回答でしょうか?
(ご提示の文章を読んだままですけれど・・)
「9月のカレンダー(全日分」は一つあれば良いですが、その隣の列に出勤日だけ「出勤」と入力しろということでしょう。

その表を元にしても計算はできますけれど、提示されている式では計算できませんね。
(ご丁寧に説明文もあるようですが、説明文の通りに計算して、質問者様がお求めの結果が得られるとは考えられません)


なお、ご質問内容とは関係ありませんけれど、ついでながら・・
質問文にご提示のような「出勤日だけのリスト」があれば、残りの出勤日数をカウントすることは可能です。

また、セルの値はいわゆるシリアル値(=エクセルの日付型の値)にしておいた方が計算には便利です。
見た目に曜日付きの表示にしたい場合には、曜日までを文字列で入力するのではなく、セルの書式設定で曜日付きの書式にしておいて表示するようにしておいた方が、計算処理はやりやすいでしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!