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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
「ChatGPT-3.5」の回答ですが
Excel(エクセル)
-
エクセルの計算式について質問
Excel(エクセル)
-
エクセルおいて,論理式の関数を使う場合は,空白のセルは,数字では0と扱われますか?
Excel(エクセル)
-
-
4
エクセルのIF関数について
Excel(エクセル)
-
5
複雑なシフト表から1日ごとの出勤者、シフトを抜き出したいです
Excel(エクセル)
-
6
エクセルの数式で教えてください。
Excel(エクセル)
-
7
[Excel] 以下のような、行がズレている2つの表を関数を使って同値チェックを行いたいです。 欲し
Excel(エクセル)
-
8
ExcelのブックAのシート1を、ブックBに関数を残したまま移動させたいです。 普通に移動をしたらブ
Excel(エクセル)
-
9
数字をコンマで区切った文字列の集計のマクロの修正
Excel(エクセル)
-
10
複数のセルの入力文字数の合計の文字数制限のポップアップ
Excel(エクセル)
-
11
[Excel] 2つの表のセル同士の突合方法について質問です。 添付の表で、 {=AND(EXACT
Excel(エクセル)
-
12
エクセルで縦に並んだデータを5行毎に横に並べたいです
Excel(エクセル)
-
13
Excel2013の制限事項について 1つのセルでif関数を&で連結します。 この場合、連結できる上
Excel(エクセル)
-
14
Excel:文字との間に数字の組合せ、次のセルの数字を1ずつ増やすには?
Excel(エクセル)
-
15
エクセルについて
Excel(エクセル)
-
16
Excel関数について
Excel(エクセル)
-
17
隔月のことを関数で処理したいのですが、教えてもらえませんか
Excel(エクセル)
-
18
Excelで基準値に対する振り分けについて
Excel(エクセル)
-
19
エクセルの関数について
Excel(エクセル)
-
20
指定した範囲から、文字A、文字Bの数をそれぞれカウントする数式が知りたいです。よろしくお願いします。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シートAで横に並んだ項目→シー...
-
エクセルで1月0日と表示される!!
-
Excelの「0」だけ非表示、小数...
-
(Excel)あるセルに文字を入力...
-
日付が未入力の際はゼロか、空...
-
Excelシートの保護時にデータの...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
VBAで変数に関数式の結果をセッ...
-
Excel 計算式の中で使っている...
-
Rangeメソッドは失敗しました。...
-
Excelのマクロについて
-
エクセルで条件に一致したセル...
-
VBA 数式ではなく計算結果をセ...
-
excelで検索した商品の画像(ネ...
-
エクセルで別シートからの最大...
-
エクセル 値の更新
-
エクセルのシート間で連続した...
-
Excelのファイル容量が減らない...
-
エクセルの文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで条件に一致したセル...
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
エクセルで1月0日と表示される!!
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
シート参照で変数を使いたい(EX...
-
ExcelでTODAY関数を更新させな...
-
エクセル ハイパーリンクで画像...
-
エクセルで、加筆修正したセル...
-
エクセルのセルに、マウスで選...
-
EXCEL関数でシート名が変わる可...
-
VBAで、セル(Range)のオブジ...
-
Excelのファイル容量が減らない...
-
excelでハイパーリンクになって...
おすすめ情報