Excel工作日平均值公式

时间:2017-08-28 15:56:25

标签: excel excel-vba excel-formula vba

我试图按月快速总结2年的数据。我想要做的是平均每个月的星期一到星期五的值。

data_image

3 个答案:

答案 0 :(得分:0)

如果您将列b更改为计算的星期几字段,请执行以下操作:

//### get value of insert button in row when clicking on <td> ###
$("tr").on("click",function(event){

    neededValue1 = $(this).attr('value');
    neededValue = neededValue1;
    console.log("<tr> button Value: "+neededValue);

    //### id clicked in tr w/row value ###
    $('#matName'+neededValue).click(function(){

        // ### Swap <td> with <input>###
        $ele1 = $(this);
        $input1 = $('<input id="UpdatedInput'+neededValue+' "/>').val($ele1.text());
        $ele1.replaceWith($input1);


        //### Save the Input entered and swap back###
        save = function(){
            var $p = $('<td id="matName'+neededValue+'"/>').text($input1.val());
            $input1.replaceWith($p);
        };

        $input1.one('blur', save).focus();
    });


    $('#bed0FL'+neededValue).click(function(){

        $ele2 = $(this);
        $input2 = $('<input id="UD'+neededValue+'"/>').val($ele2.text());
        $ele2.replaceWith($input2);

        save = function(){
            var $p2 = $('<td id="bed0FL'+neededValue+'" />').text($input2.val());
            $input2.replaceWith($p2);
        };

        $input2.one('blur', save).focus();
    });
});

然后插入一个新的列c字段,计算月份如下:

=TEXT(B2, "ddd")

然后,您可以使用array formula来解决问题。您可能需要根据数据修改公式,但以下公式应该有效。

=TEXT(B2, "mmm")

请记住,因为这是一个数组公式,您必须在PC上按Ctrl + Shirt + Enter或在Mac上按Command + Return。基本上它所说的是,如果C列不是Sat而不是Sun而D列是May,那么将E列中的值平均。

答案 1 :(得分:0)

不太难。

试试这个:

= SUMPRODUCT((WEEKDAY(B2:B99,2)<6)+0,D2:D99)/SUMPRODUCT((WEEKDAY(B2:B99,2)<6)+0)

我的最后一行为99,但您可以将99更改为您需要的最后一行。

编辑:

刚刚注意到你说#34;按月&#34;。上面的公式将采用平均列D,其中列B是工作日。要修改特定月份,只需稍微修改公式以计算月份。请参阅下文,了解如何在5月份进行此操作。 (月= 5)我把它分成两行,这样更容易阅读。

= SUMPRODUCT((WEEKDAY(B2:B99,2)<6)+0,(MONTH(B2:B99)=5)+0,D2:D99)
  /SUMPRODUCT((WEEKDAY(B2:B99,2)<6)+0,(MONTH(B2:B99)=5)+0)

答案 2 :(得分:0)

POC

与彼得的回答类似,请在K2中使用以下公式:

=SUMPRODUCT((WEEKDAY(B:B,1)>1)*(WEEKDAY(B:B)<7)*(MONTH(B:B)=MONTH(DATEVALUE("01-"&$J$2&"-2017")))*(D:D))/SUMPRODUCT((WEEKDAY(B:B,1)>1)*(WEEKDAY(B:B)<7)*(MONTH(B:B)=MONTH(DATEVALUE("01-"&$J$2&"-2017"))))

警告:尽管不是CSE / ARRAY公式,SUMPRODUCT在其括号内执行类似计算的数组。因此,不应使用像B:B这样的完整列引用。而应调整B:B以匹配您的数据需求。在这种情况下,它应该是B2:B22。

在上面的sumproduct公式中,*的行为类似AND。它将逻辑比较评估为true或false。如果通过数学运算得到true或false,则true值变为1,false值变为0.因此,只计算一切都为真的行。 sumproduct的最后一步是总结所有结果。因此,包含false的所有行都将变为零,并且不会影响求和。

引用J2的公式中的tid位基本上将假定为文本中的月份转换为可由excel识别的日期,然后将其转换为可以进行比较的数值到您的日期列表中的月份。现在唯一需要注意的是,无论是哪一年,它都是一年中的每个月。如果您需要特定年份的一个月,则需要调整公式。