来自 This post的SørenHoltenHansen的代码实际上是我答案的一部分,但并非完整。
我需要将日期及其各自的持续时间分开。
例子:
开始日期结束日期持续时间
3月11日 - 11月5日 - 11月5日
我需要它看起来像这样:
3月11日1日
4月11日1日
5月1日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”)。选择
谢谢你,
马文。
答案 0 :(得分:0)
以下代码可能有助于解决您的问题。
'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
运行' test_print_date()'时,您可能会在单元格A1:B3上看到输出。的代码。