添加其他单元格值如果是文本

时间:2017-03-03 10:30:10

标签: google-sheets

我正在尝试计算人们参与和可用的小时数百分比。人们并不总是被选中参加,但如果可以的话,不应该受到惩罚。

B栏是参与百分比。

第2行是主行,其中包含可用的总小时数,其各自的日期位于第1行。

如果某人可用但未选中,则会在其行和日期中放置小写字母X.理想情况下,我希望" x"采用相同列的主行单元格的值,但保留x的外观,因此可以很容易地计算范围。

我现在唯一可以看到这样做的方法是创建一个包含If / then的单独列(隐藏)?比如:如果我7美元=" x",那么(总和(L7 + I2),我甚至不知道如何做到这一点,更不用说多个细胞了。

我认为这将是一个俗气的解决方法,除非有时候小时数总是3小时,有时候他们是2小时。

= SUM(F7 /([2-(3 *(COUNTIFS(F7:7," X")))))

图片中的第3行到第7行,B列需要100%。

Participation spreadsheet

1 个答案:

答案 0 :(得分:0)

您可以使用此用户定义的功能。将此代码复制到脚本编辑器并保存。然后在F2中输入= total(行($ F2))并将其复制到所有行。它将行号发送到函数:

function total(ln) {
  var ss=SpreadsheetApp.getActiveSpreadsheet()
  var s=ss.getActiveSheet()
  var lc=s.getLastColumn()//get the last column with data
  var rng=s.getRange(2, 7, 1, lc-6).getValues()// get row 2 values
  var rng1=s.getRange(ln, 7, 1, lc-6).getValues()// get values of current row
  var count=0 //set count to 0
  for(var i=0;i<rng[0].length;i++){
     if(rng1[0][i]=="x"){// if value is x
       var cnst=rng[0][i]//get row 2 value
       count=count+cnst}//add to count
     else{count=count+rng1[0][i]}}//if not x, added cell value to count
return count // return the total
}

随着新列的添加,该功能将会扩展。