【问题标题】:DateDiff for one column of Dates一列日期的 DateDiff
【发布时间】:2017-05-25 10:45:11
【问题描述】:

我可以帮忙解决这个问题吗,我正在寻找这样的一列中日期的日期差异,

显然我已经尝试了一个 for 循环,但它从来没有那么容易,任何人都可以帮助:)

【问题讨论】:

  • 与什么相比的日期差异?上面那个?下面那个?当前日期?展示您迄今为止尝试过的内容
  • 这将是一个波纹管,它的列向下,所以希望日期差异以右边的天数为单位:)
  • 您只需在 Excel 公式中减去一个即可得到您想要的结果。不需要任何花哨的东西
  • 但我更喜欢使用 VBA 并说一个 for 循环,我不喜欢同时使用这两个 :( 是不是很奇怪
  • 好喜欢写它。是的,这很奇怪。 Excels 的内置功能比 vba 高效得多。通过发现它“奇怪”,您正在将性能悬置在您的 cpu 上。 Excel 也从未被设计为两者之一。

标签: excel vba datediff


【解决方案1】:

如果您的日期都在列 A 中,则放入列 B A3-A2 并向下拖动所有具有日期的单元格(最后一个单元格除外)

【讨论】:

    【解决方案2】:

    如果您尝试使用 VBA 实现此目的,假设您的日期在 A2:A6 范围内,请尝试这样的操作...

    Sub DateDif()
    Dim lr As Long, i As Long
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To lr - 1
        If IsDate(Cells(i, 1)) And IsDate(Cells(i + 1, 1)) Then
            Cells(i, 2) = DateDiff("d", Cells(i, 1), Cells(i + 1, 1))
        End If
    Next i
    End Sub
    

    或者试试这样容易调整的...

    Sub DateDif()
    Dim lr As Long
    Dim Rng As Range, Cell As Range
    lr = Cells(Rows.Count, "B").End(xlUp).Row
    Set Rng = Range("B2:B" & lr)
    For Each Cell In Rng
        If IsDate(Cell) And IsDate(Cell.Offset(1, 0)) Then
            Cell.Offset(0, 1) = DateDiff("d", Cell, Cell.Offset(1, 0))
        End If
    Next Cell
    End Sub
    

    【讨论】:

    • 抱歉,它们不在 B10 单元格下方 :)
    • 没有问题。我添加了另一种易于调整的方法。
    • 非常感谢,这就是我想做的,我相信你能理解这对初学者来说很复杂,谢谢兄弟
    猜你喜欢
    • 2019-08-15
    • 2021-12-12
    • 2021-05-24
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2021-09-19
    • 2021-08-01
    • 2020-04-21
    相关资源
    最近更新 更多