2016-07-28 3 views
1

У меня есть таблица, в которой новые данные постоянно вставлены. Если категория существует в столбце B, данные вводятся в новую строку под этой категорией из B #: F #. Но если он не существует, для этой категории будет создана новая строка, а затем данные будут вставлены снизу. Столбец А включает граф для каждой категории и помещается в ячейку слева до первого экземпляра, в котором отображается категория. Например, если столбец b имел 6 «оранжевых» вхождений, то счет слева от (col A) первого экземпляра оранжевого.создать динамическую строку CountIf для уравнения ячейки VBA

Как я могу убедиться, что если новая новая категория (скажем, «привет»), которая установлена ​​в переменную tgt, добавляется в новую строку, что оператор countif в коде динамически изменяется на значение, установленное на TGT?

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

Теперь подсчет всплывает на листе рядом с недавно вставленной категорией, однако это неверный счет. Уравнение

"= СЧЕТЕСЛИ (В: В, Привет) -1" со счетчиком -1 в клетке вместо = COUNTIF (В: B, "Привет") - 1 с кол-во 1

Если добавить еще пару кавычек в коде, чтобы попытаться включить кавычки в заявлении СЧЕТЕСЛИ в листе, как:

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 & фактически является частью строки.

= СЧЕТЕСЛИ (С [1], "& tgtVal &") -1

Вот два способа, чтобы получить правильный результат =COUNTIF(C[1],"")-1

Строка буквальным

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

Использование кода ASCII для двойной кавычки

"= СЧЕТЕСЛИ (С [1]," & Chr (34) & tgtVal & Chr (34) & "" ") -1"