列出两个日期之间的天数

亚历克斯·怀尔德(Alex Wilding)

我正在尝试编写一些需要两个日期的代码,并创建这两个日期之间的每一天的列表。我的代码是这样的:

Sub DateList()

    Dim start As Date
    start = DateValue("1/1/2001")

    Dim finish As Date
    finish = DateValue("1/1/2002")

    Dim datearray()
    ReDim datearray(finish - start + 1)

    For i = 0 To finish - start
        datearray(i) = start + i
    Next

    Range("A1:A" & UBound(datearray) + 1) = WorksheetFunction.Transpose(datearray)

End Sub

但是结果看起来像这样:

   1/01/2001
   1/02/2001
   1/03/2001
   1/04/2001
   1/05/2001
   1/06/2001
   1/07/2001
   1/08/2001
   1/09/2001
   1/10/2001
   1/11/2001
   1/12/2001
13/01/2001
14/01/2001
15/01/2001
16/01/2001
17/01/2001
18/01/2001
19/01/2001
20/01/2001
21/01/2001
22/01/2001
23/01/2001
24/01/2001
25/01/2001
26/01/2001
27/01/2001
28/01/2001
29/01/2001
30/01/2001
31/01/2001
   2/01/2001
   2/02/2001
   2/03/2001
      ....

您会看到第13行出现问题。似乎在某些地方,dd/mm/yyyy格式和mm/dd/yyyy格式之间存在切换我究竟做错了什么?

用户4039065

我怀疑您计算机的区域系统使用某种形式的DMY作为其默认日期设置。尽管Excel默认情况下使用计算机的区域设置,但VBA始终使用北美MDY。这是为了使代码可以被不同的区域使用,而不必将每种形式的编码日期例程都转录到区域设置中。有一些方法可以解决VBA以EN-US为中心的方法(想到的是Range.FormulaLocal属性),但出于所有目的和目的,如果您使用VBA进行编码,则需要使用MDY进行编码。

如果将列A充分加宽,则会看到2001年1月13日到2001年1月31日之间的值是左对齐的,而其他值是右对齐的。这是第一个暗示,它们是文本值,而不是实际的日期(也称为数字)。

忘记一分钟的日期,然后将值视为一系列长整数,从36,892开始,直到37,257。

Sub DateList()
    Dim start As Long, finish As Long
    Dim datearray As Variant, i As Long

    start = CLng(DateValue("1/1/2001"))
    finish = CLng(DateValue("1/1/2002"))

    ReDim datearray(finish - start + 1)

    For i = 0 To finish - start
        datearray(i) = start + i
    Next

    Range("A1:A" & UBound(datearray) + 1) = WorksheetFunction.Transpose(datearray)
    Range("A1:A" & UBound(datearray) + 1).NumberFormat = "dd-mmm-yyyy"
End Sub

请记住,日期的原始基础值(即Range.Value2属性)只是自1899年12月31日以来的天数。在工作表上如何显示它可能默认为用户的区域设置,但是您可以按照自己认为合适的任何方式显示它们。

        DMY和MDY

提示:在日期样式数字格式中,有两种以星号开头的数字格式。在分配给具有各种区域设置的计算机之间的工作簿中,这些将更改为在其下运行驻留计算机的MDY或DYM。

有关将字符串转换为日期VBA的DMY / MDY的VBA编码的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列出两个日期之间的天数数组

来自分类Dev

计算两个日期之间的天数?

来自分类Dev

获取两个日期之间的天数

来自分类Dev

计算两个日期之间的天数

来自分类Dev

两个日期之间的天数。日期错误在哪里?

来自分类Dev

如何找出两个日期之间的天数

来自分类Dev

计算JPA中两个日期之间的天数

来自分类Dev

Thymeleaf中两个日期之间的天数

来自分类Dev

两个日期之间的天数错误

来自分类Dev

获取两个日期之间不包括年份的天数

来自分类Dev

如何计算两个日期之间的天数

来自分类Dev

计算java中两个日期之间的天数

来自分类Dev

Python如何计算两个日期之间的天数?

来自分类Dev

如何计算两个日期之间的天数

来自分类Dev

如何获得两个日期之间的月份和天数

来自分类Dev

计算R中两个日期之间的天数

来自分类Dev

Shopify(流动):查找两个日期之间的天数

来自分类Dev

如何计算两个日期之间的星期天数

来自分类Dev

查找Pyspark中两个日期之间的周末天数

来自分类Dev

如何计算oracle中两个日期之间的天数?

来自分类Dev

直到满足条件的两个日期之间的天数差异

来自分类Dev

如何找到两个日期之间的连续天数

来自分类Dev

查找两个日期之间的天数(重复)

来自分类Dev

查找Pyspark中两个日期之间的周末天数

来自分类Dev

计算两个日期之间的天数(不使用模块)

来自分类Dev

计算两个给定日期之间的天数

来自分类Dev

PHP:两个日期之间的天数列表

来自分类Dev

如何计算两个日期之间的星期数,天数

来自分类Dev

PostgreSQL函数/两个日期之间的触发天数