首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌单张中的每一个循环?例如,VBA

谷歌单张中的每一个循环?例如,VBA
EN

Stack Overflow用户
提问于 2020-01-07 19:31:51
回答 2查看 106关注 0票数 1

在图1中,绿色单元格是指带有公式的列。在第13行中,我唯一想要和的列是没有公式的列,以及那些=“预付费用”并与第10行合并的列。所以在图1中,答案是$97 (A13:F13) -D13之和。

图1

VBA用于图片1例

代码语言:javascript
复制
Sub test()
 Dim cl As Object, count As Double
    For Each cl In Sheets("Sheet1").Range("10:10")
        If cl.MergeCells Then
            If cl.Offset(3, 0).HasFormula = False And cl.MergeArea.Cells(1, 1).Value = "Upfront Costs" Then
                count = count + cl.Offset(3, 0).Value
            End If
        Else
            MsgBox count
            Exit Sub
        End If
    Next cl
End Sub

在图2中,如果“前期成本”与"B10:L10“合并,答案将是289美元(B13:L13) - D13)。

图2

在图3中,如果将“预付费用”与"L10:N10“合并,则答案是122美元(合计13:N13)。

图3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-08 01:45:53

你可以这样做:

代码语言:javascript
复制
function fnct_sum() 
{
    var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
    var cl , count=0 ;
    var yourRange = sheet.getRange("10:10");
    for (var i = 1; i < yourRange.getNumColumns()+1; i++)
    {
        cl=yourRange.getCell(1, i);
        if (cl.isPartOfMerge())
        {
            Logger.log(cl.getMergedRanges()[0].getCell(1, 1).getValue());
            if (cl.offset(3, 0).getFormula()=="" && cl.getMergedRanges()[0].getCell(1, 1).getValue()=='Upfront Costs') 
            {
               count = count + cl.offset(3, 0).getValue();
            }

            else 
            {
               Logger.log (count);
               //break;
            }   
       }
    }
    Logger.log (count);
};
票数 2
EN

Stack Overflow用户

发布于 2020-01-07 21:41:08

合并范围以下的求和单元格

此函数假定该行没有其他合并范围,并且字符串“前期成本”总是保留合并范围中的大部分单元格,这是必须要查看的。我们也可以用背景颜色来做这个。

代码语言:javascript
复制
function runTwo() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(10,1,1,sh.getLastColumn());
  if(rg.getMergedRanges()[0].getValue()=="Upfront Costs") {
    var mrg=rg.getMergedRanges()[0];
    var vA=sh.getRange(13,mrg.getColumn(),1,mrg.getWidth()).getDisplayValues()[0];
    var fA=sh.getRange(13,mrg.getColumn(),1,mrg.getWidth()).getFormulas()[0];
    var sum=0;
    vA.forEach(function(e,i){if(!fA[i]){sum+=Number(e);}})
    SpreadsheetApp.getUi().alert('Range: ' + mrg.getA1Notation() + ' Sum: ' + sum);
    return sum;
  }else{
    SpreadsheetApp.getUi().alert('Does not meet criteria');
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59634948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档