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

时间:2015-05-26 06:43:55

标签: excel excel-vba excel-formula vba

我的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)”的输出是什么,以及宏为什么会生成这个公式?

2 个答案:

答案 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教程。

<!/ H2>

我公式中的$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

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列中添加3H,因为在B列中{{1} }和12大于13,但10不大,因此不符合成为总和的标准。