A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
No.5,7です。
No.5の回答で前提条件に説明もれがありましたので、補足します。
前回回答の数式は「1/1」「1/2」「1/3」・・・と表示されている4行目の日付部分はセルの中身がシリアル値で、表示形式を「m/d」として、「1/1」のように見せているものとして作成しています。
これが文字列だと、前回回答の数式は使用できません。
No.7
- 回答日時:
No.5です。
前回回答はあくまでも掲出された表に基づき、連勤日数を算出するためのものです。
ご質問者は
>会社のルールとして14連続勤務は禁止のため
と仰っています。
ただ、掲出された表は「月単位」のものです。見る限り1月のデータのようですが、例えば前年の12月から本年の1月にかけて、「月越えで14連勤」になっていないかのチェックは情報がないので、チェックしようがありません。
会社のルールとしてチェックするのであれば、「月単位」のチェックでは不十分であるのは言うまでもありません。
月単位でシートを分ける場合、No.6さんのご指摘のように、前月のシートのAH列の数値を当月のシートのA列に数式で転記して、計算スタートするという方法でもよいかもしれません。そのような手当を行えば、
>できれば関数が希望ですが、・・・
というご質問者のお望みのとおり、VBAでなくても算定可能になると思います。
No.6
- 回答日時:
No2です。
既に関数式で、回答が出ていますが、前月分を考慮していないので、前月分を考慮したマクロを回答します。1.以下のモジュールの標準モジュールに登録します。
使用時の注意事項
①前月の連勤日数はA列に記述済みの前提です。
もし、列を変える場合は、
Const prevCol As String = "A" '前月連勤日数の列
を適切に変えてください。
②このシートのシート名は、”勤務表”としてあります。
もし修正する場合は、
Set ws = Worksheets("勤務表")
を適切に変えてください。
③出勤の記号は"○"を使用しています。(○と〇は異なります)
もし、"○"、"×"以外の文字があった場合、エラー表示して、
そのセルで止まりますので、セルの内容を確認してください。
Option Explicit
Public Sub 連勤日数算出()
Const prevCol As String = "A" '前月連勤日数の列
Dim ws As Worksheet
Dim maxrow As Long
Dim wrow As Long
Dim wcol As Long
Dim wkday As Long
Dim dd As Long
Dim mark As String
Set ws = Worksheets("勤務表")
maxrow = ws.Cells(Rows.Count, "B").End(xlUp).Row 'B列最大行
For wrow = 6 To maxrow
wkday = 0
If ws.Cells(wrow, prevCol).Value <> "" Then
wkday = ws.Cells(wrow, prevCol).Value
End If
For dd = 1 To 31
wcol = dd + 2
mark = ws.Cells(wrow, wcol).Value
If mark = "" Then Exit For
If mark = "○" Then
wkday = wkday + 1
ElseIf mark = "×" Then
wkday = 0
Else
ws.Activate
ws.Cells(wrow, wcol).Activate
MsgBox ("不正文字[" & mark & "]があります")
Exit Sub
End If
ws.Cells(wrow, "AH").Value = wkday
Next
Next
End Sub
2.上記のマクロを実行すると、AH列に連勤日数が設定されます。
当該ブックをオープンしたときに、自動的に実行したい場合は、
以下のマクロをThisWorkbookに登録します。
そうすると、オープン時に、マクロ(連勤日数算出)が実行されます。
Private Sub Workbook_Open()
Call 連勤日数算出
End Sub
不明点があれば、補足してください。
No.5
- 回答日時:
>日々連勤のチェックをしており、確認日に対し連勤何日目か
ということは、最後の休みの(×)より後に出勤日(○)が幾つあるかを数えればよいので、添付画像で言えば、AH6セルに、
=COUNTIFS($C6:$AG6,"○",$C$4:$AG$4,">"&MAX($C$4-1,IFERROR(LOOKUP(1,0/FIND("×",$C6:$AG6),$C$4:$AG$4),0)))
という数式を入れて下方向へコピーすればよいと思います。
※○は漢数字の零ではなく、記号の○とします。
No.4
- 回答日時:
こんにちは
添付の図がよく識別できないので、イマイチはっきりとしませんけれど・・
・日付はC列からAG列までで、最後の連続している〇の数を表示する
(ご質問タイトルは「氏名を抽出」とありますが、日数を算出すると解釈)
・記入は〇か×で必ず左側セルから詰めて記入される(空白があることはない)
と解釈しました。
上記の仮定で良ければ、
AH6セルに以下の式を入力し、下方にフィルコピーでいかがでしょうか。
=IFERROR(AGGREGATE(14,6,ROW(OFFSET(A$1,,,COUNTA(C6:AG6)))/(COUNTIF(OFFSET(C6,,COUNTA(C6:AG6)-ROW(OFFSET(A$1,,,COUNTA(C6:AG6))),1,ROW(OFFSET(A$1,,,COUNTA(C6:AG6)))),"<>〇")=0),1),0)
※ 「〇」の文字はいくつか異なる字体がありますので、必ず同じ字体を用いるものとし、かつ、式中の〇もそれに合わせてください。
No.3
- 回答日時:
Sub 勤怠管理マクロ()
Dim ws As Worksheet
Dim mainSheet As Worksheet
Dim outputSheet As Worksheet
Dim nameColumn As Range
Dim currentDate As Date
Dim consecutiveDays As Integer
Dim outputRow As Long
Dim name As String
' メインのシート、出力先のシートを設定
Set mainSheet = ThisWorkbook.Sheets("勤怠シート") ' 勤怠を記録しているシートの名前を設定してください
Set outputSheet = ThisWorkbook.Sheets("出力シート") ' 結果を出力するシートの名前を設定してください
' 出力シートを初期化
outputSheet.Cells.Clear
' 名前が記載された列を設定(1行目の日付から50人分の名前が並んでいると仮定)
Set nameColumn = mainSheet.Range("A1:AX1") ' 列の範囲を調整
' 日付が記載された列を設定(2行目から最終行までループ)
For Each ws In ThisWorkbook.Sheets
If ws.Name <> outputSheet.Name And ws.Name <> mainSheet.Name Then
For Each cell In nameColumn
consecutiveDays = 0
name = cell.Value
For Each dateCell In cell.Offset(1, 0).Resize(mainSheet.UsedRange.Rows.Count - 1, 1)
If dateCell.Value = "○" Then
consecutiveDays = consecutiveDays + 1
If consecutiveDays >= 14 Then
' 14連続出勤の名前を出力シートに書き込む
outputRow = outputSheet.Cells(outputSheet.Rows.Count, 1).End(xlUp).Row + 1
outputSheet.Cells(outputRow, 1).Value = name
Exit For
End If
Else
consecutiveDays = 0
End If
Next dateCell
Next cell
End If
Next ws
End Sub
No.2
- 回答日時:
補足要求です。
画像がよく見えないので確認の意味もあります。
1.出勤を示す文字(記号)は何でしょうか。
2.休みを示す文字(記号)は何でしょうか。
3.連勤何日目かを表示するのは、AH列でしょうか。
連勤4日の場合は、「4日」と表示すれば良いのでしょうか。(末尾に日を付加する)
又、赤字で表示したいということでしょうか。
4.カレンダーは、毎月、1日~月末日までであってますか。
又、前月の連勤日は、無視して良いのでしょうか。(1日に出勤した場合は、1日の連勤日は1日になる)
ご回答ありがとうございます!
ご指摘につきまして、
1)出勤は”○”になります。
2)休みは”×”になります。
3)添付のサンプル表においてはAH列で結構です。
連勤4日の場合は黒字の「4日」で構いません。
4)カレンダーは毎月1~末日です。
前月分は可能であれば別途計算用セルか何かを作り手入力できれば結構です。
以上でよろしいでしょうか?
他何かあればご指示ください。
宜しくおねがいします。
No.1
- 回答日時:
関数自体はcountifで割と簡単に実現できると思いますが、
肝心なのは「確認日」をどのように指定するかというところかと思います。
例えば確認日の列(にあるセル)を選択しておいて「確認ボタン」を押すとか。
でもこれだと知っている人しか使えないインターフェイスになります。
色々やり方はありますので、その辺りをハッキリさせないと
答えづらいかと思います。
ご回答ありがとうございます!
ご指摘いただいた内容についてですが、
理想はエクセルファイルを開いた都度を想定していました。
今日開いたら本日の日付に対しAさんが何連勤というのがわかればよろしいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 副業・複業 勤めている会社が副業禁止です。 ですが、私は趣味で書いていた携帯小説が今度コミカライズされることにな 3 2021/12/30 18:33
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) スプレッドシートで抽出したい値があります。助けて下さい。 3 2021/12/11 10:58
- その他(ビジネス・キャリア) シフト表の休みについて教えてください 2 2021/12/28 12:43
- Excel(エクセル) 「ChatGPT-3.5」の回答ですが 4 2023/09/10 15:30
- Excel(エクセル) EXCELで、勤務時間を計算したいのですが、関数がわかりません。 9:00~17:15迄の勤務時間な 1 2021/11/24 17:27
- Excel(エクセル) ある日付から3年以内であれば【〇】を自動的に表示させる 4 2021/12/09 16:41
- Visual Basic(VBA) 【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか? 4 2021/12/28 00:03
- 仕事術・業務効率化 同業他社の求人調査・管理するだけに意味ありますか? 1 2021/12/12 18:02
- Excel(エクセル) Excelのシートの表示、非表示の方法について教えてください。 4 2022/02/02 08:41
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセル シフト表 6連続勤務はfault""
Excel(エクセル)
-
元データから連続5日以上だった人を抽出したい
Excel(エクセル)
-
【EXCEL】連続データの個数を抽出する方法を御教授ください
Excel(エクセル)
-
-
4
【エクセル】シフトで○が6個以上の場合に色を自動で変更したい Part.2
Excel(エクセル)
-
5
エクセル関数/連続した○◎●をカウントする関数
その他(Microsoft Office)
-
6
Excelで連続するデータの個数をカウントする方法を教えてください
Excel(エクセル)
-
7
複雑なシフト表から1日ごとの出勤者、シフトを抜き出したいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
別シートのセルを絶対参照にする
-
(Excel)あるセルに文字を入力...
-
エクセルのマクロで全シートを...
-
Rangeメソッドは失敗しました。...
-
日付が未入力の際はゼロか、空...
-
エクセルで特定の文字を打つと...
-
エクセルのシート間で連続した...
-
EXCELマクロで、シート間でのコ...
-
エクセルでセルを入力禁止に
-
入力したデータをほかのシート...
-
Excel / 出納帳の繰越の仕方...
-
EXCEL VBAで 図形を中央寄せに...
-
エクセルでデータがあるシート...
-
Excelのファイル容量が減らない...
-
excelでハイパーリンクになって...
-
ファイル起動時、毎回 シート1...
-
エクセル VLOOKUPから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
(Excel)あるセルに文字を入力...
-
Excelで複数シートの選択セルを...
-
エクセルで複写のように自動入...
-
Excelシートの保護時にデータの...
-
シート参照で変数を使いたい(EX...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
Excelでスクロールすると文字が...
-
Aというブックの1というシート...
-
エクセルで20万行あるシート...
-
エクセルの文字
-
エクセルで、加筆修正したセル...
-
VBAで変数に関数式の結果をセッ...
-
ExcelでTODAY関数を更新させな...
-
VBAで、セル(Range)のオブジ...
おすすめ情報