【问题标题】:calculate with month, part of months用月份计算,部分月份
【发布时间】:2018-03-13 20:29:24
【问题描述】:

我需要计算一个月的可用性 (WTF),然后将它们除以选定月份的月份中的天数。

公式应为:WTF/每月总天数 * 可用天数 = 结果

例如:

period: 07-09-2017 - 15-11-2017
WTF: 0.5

应该导致:

September: 0,4000
October:   0,5000
November:  0,2500

我的问题是如何计算期间超过 2 个月的结果。我不知道如何计算第一个月和最后一个月之间月份的结果,所以在这个例子中是十月。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这里有一些代码可以帮助您入门。它在一个字符串中输出值,但您可以轻松地将其输出到三个不同的单元格:

    Public Function OutputWork(first As Date, last As Date, wtf As Double)
        Dim worked As Object, total As Object
        Dim i As Date
        Dim j As Long
        Dim mnth As String, key As String
        Dim v As Variant
    
        Set worked = CreateObject("Scripting.Dictionary")
        Set total = CreateObject("Scripting.Dictionary")
    
        For i = WorksheetFunction.EoMonth(first, -1) + 1 To WorksheetFunction.EoMonth(last, 0)
            mnth = Format(i, "mmmm")
            If Not total.exists(mnth) Then
                total.Add key:=mnth, Item:=1
            Else: total.Item(mnth) = total.Item(mnth) + 1
            End If
    
            If Not worked.exists(mnth) Then worked.Add key:=mnth, Item:=0
            If i >= first And i <= last Then worked.Item(mnth) = worked.Item(mnth) + 1
        Next i
    
        ReDim v(LBound(total.keys()) To UBound(total.keys()))
        For j = LBound(v) To UBound(v)
            key = total.keys()(j)
            v(j) = key & ":" & wtf / total.Item(key) * worked.Item(key)
        Next j
    
        OutputWork = Join(v, ", ")
    End Function
    

    像这样使用工作表上的函数:

    =OutputWork(<start>,<end>,<WTF>)
    

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      相关资源
      最近更新 更多