SUMIF如何在Excel中使用括号和"!"进行操作 标志工作

nav*_*igh 4 excel vba excel-vba excel-formula

我的Excel中有一个宏,这个宏将公式写入Excel表格中的一个单元格.执行此操作的宏的代码如下所示:

 Range("F10").Select
 ActiveCell.FormulaR1C1 = "=SUMIF('1'!C2,C7,'1'!C[2])"
Run Code Online (Sandbox Code Playgroud)

为F10细胞生成的公式如下:

=SUMIF('1'!$B:$B,$G:$G,'1'!H:H)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解这段代码吗?'1'是什么,!,[]和......完全一样吗?一般来说,我想知道" =SUMIF('1'!$B:$B,$G:$G,'1'!H:H)" 的输出是什么 以及为什么宏生成这个公式?

tey*_*lyn 5

您选择了不幸的工作表名称.

"=SUMIF('1'!C2,C7,'1'!C[2])"

'1'是工作表名称.工作表名称可以用单引号括起来,但只有在工作表名称包含空格时才需要这样做.

!是工作表名称和单元格引用之间的分隔符.

C2 表示第2列,即列B.您正在使用公式的R1C1语法,因此C将以下数字标识为与列相关.

C7 表示第7列,因此,G列.

'1'! 再次表示工作表名称和分隔符.

C[2]表示从当前列(C)向右移动2.如果公式为此返回H列,则表示当前单元格必须位于F列中.

目前,R1C1引用并未在工作表中广泛使用,但在VBA中,它使相对单元格引用变得非常容易.括号表示"相对于当前位置",R或C将确定它是否是需要遍历的行或列.

R1C1是行1,第1列,换句话说,是单元格A1.这是绝对的参考.

R[4]C[-2]是一个相对参考.它将基于当前单元格进行评估,并且从该位置将添加4行(行的正值4)并减去2列(列的负值-2).因此,如果当前单元格是H4(转换为R4C8),则引用R[4]C[-2]意味着F2.