2014-11-24 130 views
-2

来自SørenHolten Hansen的代码 This post实际上有我的答案的一部分,但不完全。
我需要拆分日期以及各自的持续时间。

VBA单元格的日期范围与持续时间

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

我需要它看起来像这样:
11月3日    4 - 11月    5 - 11月      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])) 范

+0

你在帖子的帮助下自己尝试过吗? – 2014-11-24 11:12:13

+0

marvin这不是一个代码写作网站:)我会建议你试一试,然后张贴你试过的代码,然后我们会帮你... – 2014-11-24 11:13:05

+0

是的,道歉。我已经尝试过,但没有成功。现在发布我的代码 – marv 2014-11-24 11:14:06

回答

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 

您可能会看到在单元格A1输出:B3当你运行 'test_print_date()' avobe代码。

+0

谢谢你的代码,我试了一下,但它没有工作 – marv 2014-11-24 12:54:22

+1

哎呀!字母'F'缺乏从'函数'。你可以尝试更正的代码吗? – 2014-11-25 02:41:52

+0

我发现,当尝试代码,但它没有帮助。 你的功能只是基于硬编码的2.5进行分割。我提到的2.5只是一个例子。 所以想象一下: 柱A - 开始日期 塔B - 结束日期 塔C - 天持续时间 所以使用上述格式,存在与开始和结束日期和持续时间对应的多个行。 我需要拆分日期并分配分隔日期旁边的时间。 我希望我解释得更好? – marv 2014-11-25 10:30:57

相关问题