2016-12-09 3 views
0

Microsoft Projectと同じ式が必要です。これをExcelおよびSharePointタスクで作成する必要があります。プロジェクトで期間用に使用するExcelの式

ので、列には、二つの日付を比較し、次のようになります。式でこれをやって

1 wk 
2 wks 
3 days 
1 day 
1 mth 
2 mths 
+0

あなたの質問は何ですか? –

+1

「DateDif」のような音がして、余分なピッツァーズが付いています。 [here](https://support.office.com/en-us/article/Calculate-the-difference-between-two-dates-8235e7c9-b430-44ca-9425-46100a162f38) – JNevill

+0

を参照してください。@JNevillが ' pizzazz'というのは、すべての事態に対処するために、多くのIF()ステートメントを意味します。 –

答えて

1

は私が取り組むために喜んだものではありません、おそらく他の誰かがの無限の混乱に対処するように感じていますネストされたif s。

代わりに、2つの日付の間の年、月、週、日を吐き出すVBAルーチンで十分です。

Function projectDuration(fromdate As Date, todate As Date) As String 

    'years 
    years = DateDiff("yyyy", fromdate, todate) 
    If years > 1 Then 
     projectDuration = years & " yrs " 
    ElseIf years = 1 Then 
     projectDuration = years & " yr " 
    End If 

    'months 
    months = DateDiff("m", DateAdd("yyyy", years, fromdate), todate) 
    If months > 1 Then 
     projectDuration = projectDuration & months & " mths " 
    ElseIf months = 1 Then 
     projectDuration = projectDuration & months & " mth " 
    End If 

    'weeks 
    weeks = DateDiff("w", DateAdd("m", months, DateAdd("yyyy", years, fromdate)), todate) 
    If weeks > 1 Then 
     projectDuration = projectDuration & weeks & " wks " 
    ElseIf weeks = 1 Then 
     projectDuration = projectDuration & weeks & " wk " 
    End If 

    'days 
    days = DateDiff("w", DateAdd("w", weeks, DateAdd("m", months, DateAdd("yyyy", years, fromdate))), todate) 
    If days > 1 Then 
     projectDuration = projectDuration & days & " days" 
    ElseIf days = 1 Then 
     projectDuration = projectDuration & days & " day" 
    End If 


End Function 

これはUDFです。 VBEの新しいモジュールに貼り付けるだけで、この式をワークシートで使用できます。あなたが持っている場合たとえば、あなたのシートに以下:あなたが式を使用することができます

+---+----------+-----------+ 
| | A  |  B  | 
+---+----------+-----------+ 
| 1 | 1/1/2016 | 2/16/2016 | 
| 2 |   |   | 
+---+----------+-----------+ 

=projectDuration(A1,B1) 

をそして、それは1 mth 2 wks 1 dayを吐き出すます。

+0

あなたはあまりにもいいです。私は数式を開始し、十分な時間や欲望をあきらめました。 –

+1

私はこの考えを何年もの間に始め、範囲を狭めようとしました。その後、私はそれを試してみる必要がありました。それがうまくいったので、ここに貼り付けました。私はそれがOPのニーズに合うかどうか分かりませんが、私はそれが好きです! – JNevill

関連する問題