【问题标题】:MM-DD-YYYY to day of week, analyzing consecutive working daysMM-DD-YYYY 到星期几,分析连续工作日
【发布时间】:2009-12-29 06:02:56
【问题描述】:

我正在分析基于 x 个连续工作日的数据,M-F(以及后来跳过选定的假期)。我的计划是从 MM-DD-YYYY 确定星期几。

如何在 VBA 中做到这一点?

我发现了这种使用 .NET 的简单方法,但是如何从 Office 2007 VBA 调用,我需要添加什么参考?

DateTime.Parse("2009-10-02").ToString("D", CultureInfo.CreateSpecificCulture("en") .NET Day of week from YYYY-MM-DD

为了完整性和帮助他人,我的代码是这样结束的: 我如何才能在未来 x 天里清晰地概括这一点

        myDateStd = myDate
        If Right(Left(myDate, 2), 1) = "/" Then myDateStd = "0" & myDate   'IF M/*/YYYY
        If Len(myDateStd) = 9 Then myDateStd = Left(myDateStd, 3) & "0" & Right(myDateStd, 6) ' If MM/D/YYYY' fix
        dayNumber = Weekday(DateSerial(Right(myDateStd, 4), Left(myDateStd, 2), Mid(myDateStd, 4, 2)), vbMonday)

        Select Case dayNumber
            Case 1 To 3
                workingDaysDelta = 3
            Case 4 To 5      'i.e. its a Friday (or thur) so need to count Fri,S,S,M,T
                workingDaysDelta = 5
            Case 6 To 7     ' its sat/sun
                workingDaysDelta = 4
            Case Else
                MsgBox "ERROR date seams invalid, Date = " & myDateStd
        End Select

'Loop with If testing conditions including:
CDate(wbAn.Cells(j, "E")) < (CDate(myDate) + dayNumber)

【问题讨论】:

  • 你考虑过 SQL 和 VBA 吗?
  • @Remou:这与 SQL 或数据库有什么关系?问题中都没有提到
  • 抱歉,我还以为提到了 Access。但是,根据数据,考虑按星期几进行分析仍然可能有用。

标签: excel datetime vba


【解决方案1】:

以下任何一项都应该有效

数字,例如2

Weekday(DateSerial(Right(s, 4), Left(s, 2), Mid(s, 4, 2)), vbMonday)

短字符串,例如“星期二”

Format(DateSerial(Right(s, 4), Left(s, 2), Mid(s, 4, 2)), "ddd")

长字符串,例如“星期二”

Format(DateSerial(Right(s, 4), Left(s, 2), Mid(s, 4, 2)), "dddd")

其中s 是包含'MM-DD-YYYY' 格式的日期的字符串。

无需添加任何引用。

【讨论】:

  • @AdamRalph 我认为您可能会通过将 s 声明为字符串而不是建议将日期作为日期/时间存储在表中来使这有点复杂。
  • @Remou - 好的,我已经编辑以尝试使其尽可能清晰;-)。顺便说一句 - 我不明白这与“桌子”有什么关系。
  • 抱歉,我还以为提到了 Access。
  • 看起来不错,请注意代码示例第 1 行,返回 1 表示星期一日期而不是 2。[美国测试系统]
猜你喜欢
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多