通过在MS Excel中输入数字自动计数
我正在寻找一个excel表格来自动计算总计数 我正在为考勤管理系统创建excel。这个班大约有30名学生。它们由注册号(2011/V/01, 2011/V/02,…,2011/V/30)。他们每天有很多课。出勤(每位学生在出勤表上签名)由讲师每小时记录一次。当考勤表送达该部门时,该官员准备计算缺勤人数 该官员将为缺席学生键入最后一个注册号(例如:2011/V/05的05) 开始时,总缺勤率为零 当他/她在单元格A3中输入最后一个数字并按enter键时,相应单元格应立即增加1 在第一份考勤表中,登记号为2011/V/02、2011/V/05、2011/V/07和2011/V/13的人员缺勤通过在MS Excel中输入数字自动计数,excel,vba,Excel,Vba,我正在寻找一个excel表格来自动计算总计数 我正在为考勤管理系统创建excel。这个班大约有30名学生。它们由注册号(2011/V/01, 2011/V/02,…,2011/V/30)。他们每天有很多课。出勤(每位学生在出勤表上签名)由讲师每小时记录一次。当考勤表送达该部门时,该官员准备计算缺勤人数 该官员将为缺席学生键入最后一个注册号(例如:2011/V/05的05) 开始时,总缺勤率为零 当他/她在单元格A3中输入最后一个数字并按enter键时,相应单元格应立即增加1 在第一份考勤表中,登
(Ex: cell A3 = 02 then cell D3 from 0 to 1).
(Ex: cell A3= 05 then cell D6 from 0 to 1).
(Ex: cell A3 = 07 then cell D8 from 0 to 1).
(Ex: cell A3 = 13 then cell D14 from 0 to 1).
In second attendance sheet 2011/V/03, 2011/V/05, 2011/V/13, 2011/V/16 and 2011/V/21 are absents
(Ex: cell A3 = 03 then cell D4 from 0 to 1).
(Ex: cell A3 = 05 then cell D6 from 1 to 2). (absent in first sheet,so 1 to 2)
(Ex: cell A3 = 13 then cell D14 from 1 to 2). (absent in first sheet,so 1 to 2)
(Ex: cell A3 = 16 then cell D17 from 0 to 1).
(Ex: cell A3 = 21 then cell D22 from 0 to 1).
在第三次考勤表2011/V/03和2011/V/05中缺席
(例如:单元格A3=03,然后单元格D4从1到2)。(第二页中没有,so 1至2)
(例如:单元格A3=05,然后单元格D6从2到3)。(第二页中没有,so 2至3)
这种情况每天都会发生,直到考勤表电脑化
您想要做的事情最好通过一个非常简单的数据输入用户表单来实现 Google“excel vba数据输入用户表单”,您将发现优秀的教程 跟着他们,回到这里继续读这个答案 我将创建两张表和一个表单 Sheet1将包含数据输入的日志。只有两列,日期和学生代码 表2将包含缺勤计数。同样有两列,第一列是你所有学生的名单,第二列是缺席的连续计数 表单将包含两个控件。一个是学生代码的单个字段(文本框或更复杂的组合框,在初始化时使用表2第1列的所有学生代码构建)。第二,一个提交按钮 在“提交”按钮的“代码”上,您应该添加一些代码以获取当前日期和选定的学生代码,并将它们插入到sheet1的最后一行
在sheet2上,第二列将是一个公式,即在sheet1的第2列中简单计算相应学生代码的查找结果。您想要做的最好是使用一个非常简单的数据输入用户表单 Google“excel vba数据输入用户表单”,您将发现优秀的教程 跟着他们,回到这里继续读这个答案 我将创建两张表和一个表单 Sheet1将包含数据输入的日志。只有两列,日期和学生代码 表2将包含缺勤计数。同样有两列,第一列是你所有学生的名单,第二列是缺席的连续计数 表单将包含两个控件。一个是学生代码的单个字段(文本框或更复杂的组合框,在初始化时使用表2第1列的所有学生代码构建)。第二,一个提交按钮 在“提交”按钮的“代码”上,您应该添加一些代码以获取当前日期和选定的学生代码,并将它们插入到sheet1的最后一行
在表2上,第二列将是一个公式,即在表1的第2列中对相应学生代码的查找结果进行计数。在数据输入表的代码模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim student As String, f As Range
If Target.Cells.Count = 1 And Target.Address() = "$A$3" Then
student = "2011/V/" & Format(Target.Value, "00")
Set f = Me.Range("C:C").Find(what:=student, lookat:=xlWhole)
If Not f Is Nothing Then
Me.Range("A3:A4").ClearContents
f.Offset(0, 1).Value = f.Offset(0, 1).Value + 1
Else
Me.Range("A4").Value = "Student not found!"
End If
Me.Range("a3").Select
End If
End Sub
在数据输入表的代码模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim student As String, f As Range
If Target.Cells.Count = 1 And Target.Address() = "$A$3" Then
student = "2011/V/" & Format(Target.Value, "00")
Set f = Me.Range("C:C").Find(what:=student, lookat:=xlWhole)
If Not f Is Nothing Then
Me.Range("A3:A4").ClearContents
f.Offset(0, 1).Value = f.Offset(0, 1).Value + 1
Else
Me.Range("A4").Value = "Student not found!"
End If
Me.Range("a3").Select
End If
End Sub
我不明白这个问题。为什么单元格A3大于D4、D6等?我想你可以用
countif()
或countifs()
来完成你想要的。A3=02意味着在单元格A3中键入02。如果注册表是01,02,03。。。。29 , 003. 注意:这里是注册号只有最后的数字没有(2011/V/)。最后一个数字是“003”,不是30。我不明白这个问题。为什么单元格A3大于D4、D6等?我想你可以用countif()
或countifs()
来完成你想要的。A3=02意味着在单元格A3中键入02。如果注册表是01,02,03。。。。29 , 003. 注意:这里是注册号只有最后的数字没有(2011/V/)。最后一个数字是“003”,不是30。好的,这里2011/V/不是主要部分。因为我只输入了最后两位数字。2011/V/05示例05非常感谢Tim Williams。它工作正常。你给我指明了道路,这正是我所期望的!如果注册号为,如何更改是01,02,03。。。。29 , 003. 注意:这里是注册号只有最后的数字没有(2011/V/)。最后一个数字是“003”,不是30。我试图这样做,这样您就不必输入前导零,但看起来您需要输入整个值,这样您就可以从Target.value
周围删除Format()
调用。顺便说一句,将03和003都作为两个不同的注册表号似乎是在自找麻烦,特别是在Excel中工作时。ok,这里2011/V/不是主要部分。因为我只输入了最后两位数字。2011/V/05示例05非常感谢Tim Williams。它工作正常。你给我指明了道路,这正是我所期望的!如果注册号为,如何更改是01,02,03。。。。29 , 003. 注意:这里是注册号只有最后的数字没有(2011/V/)。最后一个数字是“003”,不是30。我试图使它成为这样,您不必输入前导零,但看起来您需要输入整个值,这样您就可以从Target.value
周围删除Format()
调用。顺便说一句,将03和003都作为两个不同的注册表号似乎是在自找麻烦,尤其是在Excel中工作时。