2014-11-24 98 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