Доброе утро!
В представленной ниже формуле в адресе ячейки H3 необходимо заменить цифровой индекс на переменную lr:
=ЕСЛИОШИБКА(СЦЕПИТЬ(ПСТР(H3;1;ПОИСК(" ";H3));ПСТР(H3;ПОИСК(" ";H3)+1;1);".";ПСТР(H3;ПОИСК(" ";H3;ПОИСК(" ";H3)+1)+1;1);".");"")
'Эта формлуаПереводит Фамилию Имя Отчество в Фамилию И.О.
Пробую сделать так:
sh_res.Cells(lr, "I").FormulaLocal = "=ЕСЛИОШИБКА(СЦЕПИТЬ(ПСТР(H" & lr & ";1;ПОИСК(" ";H" & lr & "));ПСТР(H" & lr & ";ПОИСК(" ";H" & lr & ")+1;1);".";ПСТР(H" & lr & ";ПОИСК(" ";H" & lr & ";ПОИСК(" ";H" & lr & ")+1)+1;1);".");"")"
происходит ошибка: Compile Error Expected list Separator or )
Все ваши ошибки я не стал смотреть, сделал сам с самого начала. Посмотрите сами, в чём отличие между вашим и моим решением.
Если в формуле используется кавычка, то нужно вместо одной кавычки напечатать две.
Символы "_" я использовал, чтобы было видно код макроса, чтобы код макроса не заходил за пределы монитора.
Sub макрос()
Dim lr As Long
lr = 3
ActiveCell.FormulaLocal = _
"=ЕСЛИОШИБКА(СЦЕПИТЬ(ПСТР(H" & lr & ";1;ПОИСК("" "";H" & lr & _
"));ПСТР(H" & lr & ";ПОИСК("" "";H" & lr & ")+1;1);""."";ПСТР(H" & lr & _
";ПОИСК("" "";H" & lr & ";ПОИСК("" "";H" & lr & ")+1)+1;1);""."");"""")"
End Sub
Я как раз тоже закончил - проблема была в двойных кавычках.
Все работает супер!
Спасибо!
Доброго времени суток, никогда не сталкивался с макросами, стало интересно не могли ли Вы помочь с решением одной задачки. Есть Лист с N- ным количеством строк предположим (3000), и определенным количеством столбцов - 15. Требуется вставить формулу в определенные столбцы с интервалом через каждые 16 строк, пробовал так:
Range("M3,M19,M35").FormulaR1C1 = "=RC[-1]/86400"
Range("N3,N19,N35").FormulaR1C1 = "=RC[-3]-RC[-1]"
но столбцов много и забивать значения вручную тяжело.
Макрос
Sub макрос()
Dim i As Long
' Отключение монитора и пересчёта формул, чтобы ускорить макрос.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' Вставка формул.
For i = 3 To 3000 Step 16
Cells(i, "M").FormulaR1C1 = "=RC[-1]/86400"
Cells(i, "N").FormulaR1C1 = "=RC[-3]-RC[-1]"
Next i
' Включение того, что отключили.
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Благодарю Вас! Очень выручили!