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

VBA用于图片1例
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

发布于 2020-01-08 01:45:53
你可以这样做:
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);
};发布于 2020-01-07 21:41:08
合并范围以下的求和单元格
此函数假定该行没有其他合并范围,并且字符串“前期成本”总是保留合并范围中的大部分单元格,这是必须要查看的。我们也可以用背景颜色来做这个。
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');
}
}https://stackoverflow.com/questions/59634948
复制相似问题