我的Excel中有一个宏,这个宏将公式写入Excel表格中的一个单元格。 执行此操作的宏的代码如下所示:
Range("F10").Select
ActiveCell.FormulaR1C1 = "=SUMIF('1'!C2,C7,'1'!C[2])"
和为F10细胞生成的公式如下:
=SUMIF('1'!$B:$B,$G:$G,'1'!H:H)
有人可以帮我理解这段代码吗? '1'是什么,! ,[]和......完全一样吗?
一般来说,我想知道“=SUMIF('1'!$B:$B,$G:$G,'1'!H:H)
”的输出是什么,以及宏为什么会生成这个公式?
答案 0 :(得分: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。
答案 1 :(得分:2)
所以我假设你知道
=sum($B:$B)
呢?如果没有,那么你需要在解决这个问题之前先学习一个基本的Excel教程。
我公式中的$B:$B
是范围。它指的是当前工作表上的enitre列B
的范围。如果您想在另一个工作表上汇总列B
,那么您可以指定worksheetname!$B$B
之类的范围,或者如果工作表名称中包含空格,则使用'worksheet name'!$B$B
之类的引号。
因此,'1'!$B$B
引用名为B
'1'
那么方形brakcets做什么?那是来自R1C1 notation。所以通常你引用一个范围绝对。因此,当您使用类似$B$B
的范围时,无论您在何处调用该函数,您都会引用列B
(即无论您的函数位于哪个单元格中)。 R1C1表示法是Excel允许引用单元格相对的方式,换句话说是指相对于您的公式编写的单元格的位置。在R1C1表示法中c2
实际上仍然是绝对的,它意味着第二列(即B
)。 c[2]
现在是相对的,[2]
表示公式所在单元格右侧的两列。
SUMIF
是一个excel公式,它只汇总满足特定条件的范围部分。在您的情况下,我们无法说出它会输出什么,因为我们不知道您的工作表中有什么。但基本上是
=SUMIF('1'!$B:$B,$G:$G,'1'!H:H)
'1'!$B:$B
是您想要测试条件的值的范围,$G:$G
是您的条件(我认为应该指向单个单元格而不是btw的范围......)最后'1'!H:H
是您想要求和的值范围。
因此,如果您希望仅在H
列中的值大于10且B
表{/ p>}时才会对列1
中的值求和
B G H
________________
1 | 5 '>10 1
2 | 12 2
3 | 13 3
=SUMIF('1'!$B:$B,$G:$G,'1'!H:H)
的结果为5
(即在2
列中添加3
和H
,因为在B
列中{{1} }和12
大于13
,但10
不大,因此不符合成为总和的标准。