2016-07-28 50 views
1

我有一个表,新数据连续插入。如果类别存在于列B中,则数据将从B#:F#的该类别下的新行中输入。但是,如果它不存在,则为该类别标题创建一个新行,然后在下面插入数据。 列A包含每个类别的计数,并放置在第一个实例出现的类别左侧的单元格中。例如,如果列b出现了6次“橙色”,则计数位于(列A)左边的第一个橙色实例。创建一个动态CountIf字符串的单元方程VBA

如何确保在新行中添加了设置为变量tgt的新类别(可以说是“hello”),代码中的countif语句动态更改为设置为TGT?

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

现在在新插入的类别旁边的工作表中弹出一个计数,但它不是正确的计数。该方程是

“= COUNTIF(B:B,你好)-1” 为-1 在细胞代替 = COUNTIF计数(B:B, “你好”) - 1与的1

计数如果我添加另一对引号中的代码试图包括在片材等在COUNTIF语句引号:

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

如何确保它出来作为“ tgtVal”,而不是tgtVal在细胞的方程?

+0

你能分享你的工作表吗?和期望的结果表? –

回答

0

当试图建立一个字符串文字时,你应该输出结果到即时窗口。这将帮助您检测是否有任何错误。

这是您的代码段"=COUNTIF(C[1], "" & tgtVal & "")-1"的结果。注意& tgtVal &实际上是字符串的一部分。

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

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

字符串文字

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

使用ASCII码为双引号

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