【问题标题】:VBA separate range of dates in cells with durationVBA 将单元格中的日期范围与持续时间分开
【发布时间】:2015-01-22 01:57:50
【问题描述】:

This post 下的 Søren Holten Hansen 的代码实际上包含了我的部分答案,但并不完全。
我需要将日期与它们各自的持续时间分开。

示例:
开始日期    结束日期    持续时间
11 月 3 日              11 月 5 日           2.5

我需要它看起来像这样:
11 月 3 日     1
11 月 4 日     1
11 月 5 日     0.5

我需要在最后一天显示半天。我不确定如何进行拆分。 感谢本论坛提供的帮助。这真的会救我的命!!!

我的代码:
ActiveCell.FormulaR1C1 = _ "=IF(AND(RC[-4]=R[-1]C[-4],RC[-4]=R[1]C[-4]),R[-1]C[-2] -R[-1]C, IF(R[-1]C[-2]=R[-1]C,R[-1]C[-2], R[-1]C[-2]) )" 范围(“E21”)。选择

谢谢你,
马文。

【问题讨论】:

  • 你有没有在帖子的帮助下自己尝试过?
  • marvin 这不是一个代码编写网站 :) 我建议您自己尝试一下,然后发布您尝试过的代码,然后我们会帮助您...
  • 是的,抱歉。我已经尝试过了,但不成功。现在发布我的代码
  • @PareshJ :正如您所见,我在这方面是个新手,需要一些认真的帮助。我的代码基本上是一个公式。那是我能做到的唯一方法,我相信有更好的方法。请帮忙! :(
  • @SiddharthRout - 你能帮帮我吗,我现在已经挣扎了 5 个小时,没有任何突破

标签: excel vba


【解决方案1】:

以下代码可能有助于解决您的问题。

'Function print_date
' 1st argument: date of period begin
' 2nd argument: date of period end
' 3rd argument: duration in days
'
' CAUTION: This code does not check consistency between dates and duration.
'    If you set duration 1.5 between Nov-3 to Nov-5, this code raise no error
'    and you may see duration -0.5 on Nov-5.
Function print_date(beginDay, endDay, duration) As Integer
  Dim aDay As Date
  Dim row As Integer

  row = 1
  For aDay = beginDay To endDay
   Cells(row, 1) = aDay 'set date on first column
    If duration > 1# Then
      Cells(row, 2) = 1 'set 1 on second column because more one day left.
    Else 'Duration is less than one day
      Cells(row, 2) = duration
    End If
    duration = duration - 1#
    row = row + 1
  Next aDay

End Function

' Test routine I checked operation of print_date.
Sub test_print_date()
 Dim a As Long

 a = print_date(DateValue("2014/11/03"), DateValue("2014/11/05"), 2.5)


End Sub

当您运行 avobe 代码的“test_print_date()”时,您可能会在单元格 A1:B3 上看到输出。

【讨论】:

  • 谢谢你的代码,我试过了,但没用。
  • 哎呀! “功能”中缺少字母“F”。你能试试更正的代码吗?
  • 我在尝试代码时发现了这一点,但没有帮助。您的函数只是根据硬编码的 2.5 进行拆分。我提到的 2.5 只是一个例子。所以想象一下:A 列 - 开始日期 B 列 - 结束日期 C 列 - 持续时间 所以使用上述格式,有多行包含开始日期和结束日期以及相应的持续时间。我需要拆分日期并在拆分日期旁边分配持续时间。我希望我能更好地解释这一点?
  • 我将数据和函数分开。在函数“print_date”中,没有硬编码的日期和持续时间。我写了子程序“test_print_date”来展示一个使用“print_date”的例子。在该子程序中,开始日期、结束日期和持续时间是硬线的。你可以随意修改'test_print_date()'中的代码。
  • 坦率地说我不知道​​该怎么做 :( 我假设我需要以某种方式循环代码直到找到一个空单元格?
猜你喜欢
  • 2013-12-24
  • 2015-07-10
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 2021-12-11
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多