Страницы: 1
RSS
Как добавить переменную в формулу, VBA
 
В одном из циклов есть такое условие    
If ActiveCell(0, -1) <> "" Then ActiveCell.FormulaR1C1 = "=SUMIF(RC[-1]:R[2528]C[-1],RC[-1],RC[-4]:R[2528]C[-4])"
 
Но значение R[2528] может менятся в зависимости от количества строк.
Перед циклом я задаю переменную, которая возращает количество строк, что-то типа    
Range("A1").Select  
er = Range(Selection, Selection.End(xlDown)).Rows.Count  
 
Как бы вставить эту переменную в формулу вместо R[2528]??
 
Вот так:  
If ActiveCell(0, -1) <> "" Then ActiveCell.FormulaR1C1 = "=SUMIF(RC[-1]:R[" & er & "]C[-1],RC[-1],RC[-4]:R[" & er & "]C[-4])"
 
только не забывайте, что подставить вам надо число, равное количеству столбцов от текущей ячейки. Короче, что ссылки у вас относительные :)
 
Да, а зачем Вам выделять ячейку?    
Возможно, так поступить.  
--------------------------  
'Range("A1").Select  
'er = Range(Selection, Selection.End(xlDown)).Rows.Count  
lCountRow = ActiveSheet.UsedRange.Rows.Count    
'или  
'lCountRow = ActiveSheet.Range(Cells(1,1),Cells(Rows.Count, 1).End(xlUp)).Rows.Count    
--------------------------
<FONT COLOR="CadetBlue">
 
Не совсем поняла "подставить вам надо число, равное количеству столбцов от текущей ячейки".  
Почему столбцов? и от текущей ячейки до куда?  
 
Таки да, неправильную формулу возвращает
 
{quote}{login=Светлана В}{date=07.12.2010 02:03}{thema=}{post}Не совсем поняла "подставить вам надо число, равное количеству столбцов от текущей ячейки".  
Почему столбцов? и от текущей ячейки до куда?  
 
Таки да, неправильную формулу возвращает{/post}{/quote}  
 
Да, со столбцами я конечно стормозил - конечно имелась ввиду строка. Т.е. подставить вам надо следующее число:  
Номер_строки_ячейки_с_формулой - Номер_последней_строки  
 
Думаю на примере будет понятно
 
{quote}{login=Дъмитръ}{date=07.12.2010 01:56}{thema=}{post}Да, а зачем Вам выделять ячейку?    
Возможно, так поступить.  
--------------------------  
'Range("A1").Select  
'er = Range(Selection, Selection.End(xlDown)).Rows.Count  
lCountRow = ActiveSheet.UsedRange.Rows.Count    
'или  
'lCountRow = ActiveSheet.Range(Cells(1,1),Cells(Rows.Count, 1).End(xlUp)).Rows.Count    
--------------------------{/post}{/quote}  
Вы знаете, этот UsedRange просто прелесть что такое)) как и в предыдущем совете))) спасибо))) продолжаем борьбу с селектами
 
{quote}{login=webley}{date=07.12.2010 02:12}{thema=Re: }{post}{quote}{login=Светлана В}{date=07.12.2010 02:03}{thema=}{post}Не совсем поняла "подставить вам надо число, равное количеству столбцов от текущей ячейки".  
Почему столбцов? и от текущей ячейки до куда?  
 
Таки да, неправильную формулу возвращает{/post}{/quote}  
 
Да, со столбцами я конечно стормозил - конечно имелась ввиду строка. Т.е. подставить вам надо следующее число:  
Номер_строки_ячейки_с_формулой - Номер_последней_строки  
 
Думаю на примере будет понятно{/post}{/quote} я таки сама разобралась, просто у меня что-то в файло стормозило и диапазоны вообще не выделялись))  
Принцип понятен, буду адаптировать под свои задачи))  
Единственное, хотела бы спросить, что означают & в R[" & er & "] ???
 
& - объединение двух строк
 
Спасибо, всё получилось.    
А относительные ссылки в данном случае очень нужны, ибо у диапазона должна сдвигаться верхняя граница. А нижнюю границу зафиксировала путем вычитания номера шага цикла из переменной.  
короче, намудрила, но работает))) спасибо огромное)))
Страницы: 1
Читают тему
Наверх