在自定义函数

时间:2015-09-13 22:28:37

标签: function google-sheets type-conversion duration

我有一个Google Spreadsheets,我一直用它来记录我在工作中工作的时间。我正在尝试创建一个自定义函数来计算本周的总小时数。说我加班6小时,但周五休息。我的正常时间是32,我将有6个小时或加班。如果我不工作40个小时,我想调整我的总工作时间,从任何加班时间开始,并增加我的正常工作时间。

我已经提出了以下功能,但我还没有能够使它工作。我相信我遇到了数据类型的问题(输入是持续时间),但我不知道如何解决它。我除以24因为这似乎将值从持续时间转换为数字,但我仍然无法让它返回正确的答案。

function calcAdjRegHours(regHours, otHours) {
  if(regHours<(40/24)); 
  {
    if(otHours>(0/24)); 
    {
      if((regHours + otHours)>(40/24)); 
      {
        var diff = (40/24) - regHours;
        regHours += diff;        
        return regHours;        
      } elseif; {
        return "regHours + otHours is less than 40";
      }
    } elseif; {
      return "there are no otHours";
    }
  } elseif; {
    return "regHours is greater than 40";
  }
}  

我忽略了什么,或者我是否过于复杂?

编辑:当我使用40:00和2:00的输入调用此函数时,我得到值:

Sun Dec 31 1899 17:00:00 GMT-0700(MST)2208988800001.6665。

如果我运行此功能:

function calcAdjRegHours(regHours, otHours) { return ((regHours*24 + otHours*24)/24); }

我得到:-4418114400000。

如果我使用“return(regHours + otHours);”,我会:

Sun Dec 31 1899 17:00:00 GMT-0700(MST)Sat Dec 30 1899 03:00:00 GMT-0700(MST)。

当我尝试添加变量时出现问题。它们被格式化为持续时间,从我的研究中我可以/需要将它们转换为算术。我通过将变量乘以24,添加,然后再将其除以24来使其恢复到持续时间。

1 个答案:

答案 0 :(得分:0)

我最终使用:= if(F14&lt;(40/24),(F14 + G14),if(F14 =(40/24),F14,F14-(40/24)))。虽然我还想提出一个可以更好地完成它的自定义功能,但这样做了。