【问题标题】:Employee serial Number based on hiring date基于招聘日期的员工序列号
【发布时间】:2017-11-06 18:41:24
【问题描述】:

请协助修改以下代码。我想做的是根据每个员工的招聘日期为每个员工创建唯一的序列号,例如。 on 于 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果您的列表仍然按招聘日期排序,您只需将以下公式放入 B2 并绘制下来:

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

    编辑:

    如果是未排序的列表,请在 B2 中使用以下公式并将其绘制下来:

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

    或者(如果你想要它作为数字而不是文本):

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

    【讨论】:

    • 谢谢 Jochen,你是个好人。但是如果您不介意还有一个问题,如果两个相似的日期不按顺序排列怎么办。例如。 ("E2")=1/1/2016,下面的一个是 3/3/2016,下面第三个单元格是 1/1/2016。我怎么能在这里。很抱歉给您带来问题。
    • 没问题。我编辑了我的解决方案以支持未排序的列表。
    • 非常感谢 Jochen,我真的不得不感谢你,希望你一切顺利。欣赏它。
    【解决方案2】:

    您不能应用包含日期/时间字符以及常规整数字符的格式掩码(请参阅Number Format Codes),但如果您将整数转换为小时数,那么您的 Emp no 可以一次性创建。

    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 function 匹配的日期数后,返回的整数将转换为TimeSerial 的小时数并添加到招聘日期yymmddhh 的格式掩码生成了整个 Emp no

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

            

    【讨论】:

    • 像往常一样,你是最优秀的人之一,他在 VBA 中给出了一个简短而中肯的答案。非常感谢吉普德,欣赏它。
    猜你喜欢
    • 2013-09-09
    • 2021-12-08
    • 2023-04-02
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多