为单元方程VBA创build一个Dynamic CountIf String

我有一个新的数据连续插入的表格。 如果类别存在于列B中,则数据将从B#:F#的该类别下的新行中input。 但是,如果不存在,则为该类别标题创build一个新行,然后在下面插入数据。 列A包含每个类别的计数,并放置在第一个实例的左侧,出现一个类别。 例如,如果列b有6个“橙色”事件,则在(列A)左边的计数是橙色的第一个实例。

我怎样才能确保如果一个新的类别(可以说“你好”)被设置为variablestgt被添加到一个新的行,在代码coucri语句dynamic地改变为设置为tgt的值?

Dim tgtVal As String tgtVal = tgt.Value tgt.Offset(0, -1).FormulaR1C1 = "=COUNTIF(C[1], " & tgtVal & ")-1" 

现在,在新插入的类别旁边的工作表中会popup一个计数,但这不是正确的计数。 等式是

“= COUNTIF(B:B,Hello)-1”在单元格中的计数为-1,而不是= COUNTIF(B:B,“Hello”) – 1的计数为1

如果我在代码中添加另一对引号,试图在表单中的countif语句中包含引号,如:

tgt.Offset(0,-1).FormulaR1C1 =“= COUNTIF(C [1],”“&tgtVal&”“)-1”那么它显示为= COUNTIF(B:B,&tgtVal&“) -1作为单元格中的等式

我如何确保它出现“ tgtVal ”而不是tgtVal在单元格的方程?

当试图build立一个string文字时,你应该输出结果到直接的窗口。 这将帮助您检测是否有任何错误。

这是你的代码段"=COUNTIF(C[1], "" & tgtVal & "")-1" 。 注意& tgtVal &实际上是string的一部分。

= COUNTIF(C [1],“&tgtVal&”)-1

这里有两种方法得到正确的结果=COUNTIF(C[1],"")-1

string字面量

“= COUNTIF(C [1],”“”&tgtVal&“”“)-1”

使用ASCII码进行双引号

“= COUNTIF(C [1],”&Chr(34)&tgtVal&Chr(34)&“”“)-1”