员工序列号根据招聘date

在这里输入图像说明

请协助修改下面的代码。 我想要做的是根据他们的雇佣date,为每个员工创build唯一的序列号。 在2016年1月13日雇用的序列号来自(年,月,日+ 00)的最后两位数字(16011300)表示当天和(年,月,日) +01)这意味着(16011301)在同一天雇用的第二个人。 对那些在不同日子雇用的人做同样的事情。 首先看下面的图片代码做什么,但第二个我想要的是什么。 预先感谢帮助使用的代码:

Dim myDate As Date, i As Long, dayPart As String Application.EnableEvents = False For i = 2 To Rows.Count If Cells(i, 5).Value > 1 And Not IsEmpty(Cells(i, 5).Value) Then myDate = Cells(i, 5) dayPart = Format(Year(myDate), "00") - 2000 & _ Format(Month(myDate), "00") & _ Format(Day(myDate), "00") & 1 Cells(i, 2) = dayPart End If Next i Application.EnableEvents = True 

如果您的列表保持按招聘datesorting,您可以将以下公式放在B2中并将其绘制:

= IF(E2 = E1,B1 + 1,VALUE(TEXT(E2, “YYMMDD”)& “00”))

编辑:

如果未sorting的列表在B2中使用以下公式并将其绘制:

= TEXT(E2, “YYMMDD”)&TEXT(COUNTIF($ E $ 1:E1,E2), “00”)

或(如果你想要它作为一个数字,而不是文字):

= VALUE(TEXT(E2, “YYMMDD”)&TEXT(COUNTIF($ E $ 1:E1,E2), “00”))

您不能应用包含date/时间字符以及常规整数字符的格式掩码(请参阅数字格式代码 ),但是如果将整数转换为小时数,则可以一次性创build您的编号。

 Dim i As Long, seq As Long, dayPart As String With Worksheets("employees") For i = 2 To .Cells(Rows.Count, "E").End(xlUp).Row seq = Application.CountIf(.Columns(5).Resize(i - 1, 1), .Cells(i, "E").Value) dayPart = Format(.Cells(i, "E").Value2 + TimeSerial(seq, 0, 0), _ "yymmddhh") .Cells(i, "B") = dayPart Next i End With 

使用COUNTIF函数收集之前匹配date的数量后,返回的整数将被TimeSerial转换为小时,并添加到招聘dateyymmddhh的格式掩码生成了整个Emp号

当然,这仅限于每天24名新员工的雇用。

emp_no_frequency