广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Excel生成随机不重复的日期

    来源:网络收集  点击:  时间:2024-03-07
    【导读】:
    如下图所示,Excel表格上面要生成一个随机且不重复的日期,函数公式是可以生成随机的日期,但生成的日期不能排除存在重复的可能。要实现这一功能,还是得使用到VBA程序。工具/原料more计算机Excel 2010方法/步骤1/6分步阅读

    打开Excel表格后,按下【Alt+F11】组合键打开VBA编辑器。

    2/6

    在VBA编辑器的菜单栏上边点击【插入】、【模块】。

    3/6

    在模块的代码框里边输入以下VBA程序代码:

    Sub RndDate()

    Dim mo, da, md, ro, i1, i3

    On Error Resume Next 忽略运行过程中可能出现的错误

    Set mysheet1 = ThisWorkbook.Worksheets(Sheet1) 定义工作表

    i1 = 0 i1的值初始化

    For ro = 2 To 366 从第2行到366行

    If mysheet1.Cells(ro, 1) Then 如果单元格不是空白,则

    Do

    i1 = i1 + 1 每执行一次Do循环,i1递增1

    mo = Int(Rnd() * 12 + 1) 月份随机

    If (mo = 7 And mo Mod 2 = 1) Or (mo = 8 And mo Mod 2 = 0) Then

    da = Int(Rnd() * 31 + 1) 如果是1、3、5、7、8、10、12月份,其天数为31天

    End If

    If ((mo 7 And mo Mod 2 = 0) Or (mo 8 And mo Mod 2 = 1)) And mo 2 Then

    da = Int(Rnd() * 30 + 1) 如果是4、6、9、11月份,其天数为30天

    End If

    If mo = 2 Then

    da = Int(Rnd() * 28 + 1) 如果是2月份,其天数为28天

    End If

    md = mo 月 da 日 拼合成日期

    i3 = Application.WorksheetFunction.CountIf(mysheet1.Range(B2:B366), md)

    If i3 1 Then 如果在B2:B366里边出现的日期不重复,则

    mysheet1.Cells(ro, 2) = md 把日期写入相应的单元格

    Exit Do 退出Do循环

    End If

    If i1 200000 Then 如果循环次数大于200000,则退出循环

    Exit Do

    End If

    Loop

    End If

    Next

    End Sub

    4/6

    输入完程序之后,按下【F5】键运行程序,或者在VBA编辑器的工具栏上点击“运行”图标运行程序。

    5/6

    回到Excel工作表界面,将会看到生成的随机日期。

    6/6

    VBA程序、思路解析:

    (1)Int是取整函数,Rnd是大于或等于0且小于1的随机数,日期、月份都没有从0开始的,所以使用随机函数乘以相应的数值后加1再取整(如:Int(Rnd() * 12 + 1));

    (2)在判断月大(31天)、月小(30天)时,可以使用余数函数Mod取余来判断,这样就不用一一的写出判断条件(如:If (mo = 7 And mo Mod 2 = 1) Or (mo = 8 And mo Mod 2 = 0) Then);

    (3)Countif函数主要用来判断存在相同数值的个数,如果存在的个数为0,那正好说明该数值(日期)不存在重复,可以把它写入到单元格里边;

    (4)使用Do……Loop循环时,应当避免死循环的出现(如:计算超过指定的次数时强制退出Do循环)。如果出现死循环,整个工作表将会出现无响应的现象。

    注意事项

    个人经验,仅供参考。

    EXCEL编程语言
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_286916.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 03:48:40  耗时:0.024
    0.0243s