网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月20日漏签0天
excel吧 关注:281,356贴子:1,549,808
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 16回复贴,共1页
<<返回excel吧
>0< 加载中...

求助大佬求助做考勤表,感谢🙏

  • 只看楼主
  • 收藏

  • 回复
  • 顾子桓
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大佬请问一下,有没有公式,根据考勤天数倒推考勤表,随机打对勾,还得扣除掉周末和节假日


  • 跟着南哥混3天饿9顿
  • E见钟情
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
准备造假是吧


2025-07-20 02:44:34
广告
  • 白音碎
  • 以E待劳
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
要根据考勤天数生成随机考勤表,扣除周末和节假日,可以使用Excel公式或VBA代码来实现。下面是一个基于Excel公式的简化方法:
1.首先,假设你有一个日期列表,比如在A列,包含了一个月的所有工作日。
2.你可以在B列用公式随机生成考勤记录(对勾或空白)。
步骤:
1.在A列输入一个月内的所有日期。
2.使用Excel的WORKDAY函数生成不包含周末和节假日的日期。
=WORKDAY(start_date, days, [holidays])
假设你从单元格A2开始,A1是开始日期,比如2024年6月1日,那么A2的公式是:
=WORKDAY(A1-1, 1, holidays)
其中,holidays是一个包含节假日的范围(比如,假设在E列)。
3.继续向下拖动公式,填满整个A列直到这个月的最后一个工作日。
4.在B列生成随机考勤记录。
在B2输入以下公式:
=IF(A2<>"", IF(RANDBETWEEN(0, 1) = 1, "√", ""), "")
向下拖动公式,填满整个B列。
5.统计考勤天数,假设我们希望有一个目标考勤天数(比如C1单元格)。
在C2输入以下公式,计算当前考勤天数:
=COUNTIF(B:B, "√")
如果你需要特定的考勤天数,可能需要多次刷新(按F9)以生成满足条件的考勤表。


  • 白音碎
  • 以E待劳
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
进阶:使用VBA
如果你需要更高级和精确的控制,可以使用VBA来实现。以下是一个简单的VBA代码示例,可以生成随机考勤记录,排除周末和节假日:
Sub GenerateAttendance()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim startDate As Date
Dim endDate As Date
Dim currentDate As Date
Dim targetDays As Integer
Dim attendanceDays As Integer
Dim holidays As Range
Dim isHoliday As Boolean
Dim i As Integer
startDate = DateValue("2024-06-01")
endDate = DateValue("2024-06-30")
targetDays = 20 ' 目标考勤天数
attendanceDays = 0
' 假设E列是节假日列表
Set holidays = ws.Range("E1:E10")
' 清空之前的考勤记录
ws.Range("A2:B" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).ClearContents
i = 2
currentDate = startDate
Do While currentDate <= endDate
If Weekday(currentDate, vbMonday) <= 5 Then ' 排除周末
isHoliday = Application.WorksheetFunction.CountIf(holidays, currentDate) > 0
If Not isHoliday Then ' 排除节假日
ws.Cells(i, 1).Value = currentDate
If attendanceDays < targetDays And Rnd() > 0.5 Then
ws.Cells(i, 2).Value = "√"
attendanceDays = attendanceDays + 1
Else
ws.Cells(i, 2).Value = ""
End If
i = i + 1
End If
End If
currentDate = currentDate + 1
Loop
End Sub
将上述代码复制到Excel的VBA编辑器中,然后运行该宏,它会生成一个随机考勤表,符合你的要求。


  • 🎶虚空蛋黄酱
  • E夫当关
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
随便整了一个
节假日需要自己手动输入,毕竟excel不可能有中国的放假安排
=LET(p,TOCOL(IF($A$2:$AE$2="休",坤,DAY($A$1:$AE$1)),2),q,TAKE(SORTBY(p,RANDARRAY(ROWS(p))),AF3),IF(ISNUMBER(MATCH(DAY($A$1:$AE$1),q,)),"√",""))


  • Excel搭档
  • E通百通
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
参考:https://tieba.baidu.com/p/8979377146
节假日得自己搞了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 16回复贴,共1页
<<返回excel吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示