Scryde Пользователь Сообщений: 12 |
#1 29.03.2022 05:56:24 Здравствуйте.
В таком виде тоже отрабатывается:
А вот такого вида формулу, запрос уже отработать не может:
Подскажите, пожалуйста, что не так ? Прикрепленные файлы
Изменено: Scryde — 29.03.2022 05:57:04 |
||||||
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
Странно что отрабатывает хоть что-то P.S. смысл от примера сильно теряется если защитить проект паролем. По вопросам из тем форума, личку не читаю. |
Scryde Пользователь Сообщений: 12 |
#3 29.03.2022 07:26:23 Извиняюсь, забыл снять защиту (
И все же я что-то делаю не то ) Прикрепленные файлы
Изменено: Scryde — 29.03.2022 07:36:38 |
||
БМВ Модератор Сообщений: 21378 Excel 2013, 2016 |
#4 29.03.2022 07:34:52
И обратите внимание на парные двойные кавычки. По вопросам из тем форума, личку не читаю. |
||
Scryde Пользователь Сообщений: 12 |
|
Scryde Пользователь Сообщений: 12 |
#6 29.03.2022 08:06:25 Извиняюсь, что в этой же теме, но задача та же
Выше приведен макрос для определения последней заполненной строки, и внесения формулы в диапазон с АМ13 по АМ (последней строки) Не могу сообразить как прописать макрос для внесения изменения в строку итогов F16:AG16 (файлов много, количество строк отличается). Внести изменение в F16, протянуть формулу до AG16 Прикрепленные файлы
Изменено: Scryde — 29.03.2022 11:30:59 |
||
Scryde Пользователь Сообщений: 12 |
#7 29.03.2022 12:04:34 Получилось вставить в первую ячейку итогов, а как протянуть до AG столбца понять не могу (
С сложной формулой опять не вставляется в первую ячейку итогов, вроде все правильно пишу
Люди, помогите, пожалуйста. Прикрепленные файлы
Изменено: Scryde — 29.03.2022 12:07:17 |
||||
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
1 |
|
03.09.2012, 00:55. Показов 28823. Ответов 15
Доброго времени суток ! На листе Excel 2003 имеет несколько тысяч формул типа Код ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AR$10 ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AА$10 ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AB$10 ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$105 ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$109 итд. Нужно через автозамену (заменить все) заменить последнюю цифру во всех формулах, которые заканчиваются на 10 — в даном примере на 14 например, однако через автозамену это сделать не получается, так как $105, $109 также меняется на $145, $149, так как присутствует $10. Как сделать, чтобы замена не происходила в тех числах, которые состоят «визуально» в т.ч. и из заменяемого числа. Благодарю и низко кланяюсь..
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
03.09.2012, 08:58 |
2 |
|||
Несколько тысяч ссылок!!!
2 |
Заблокирован |
||||
03.09.2012, 10:08 |
3 |
|||
Alex77755, 3-я строка
иначе для подобных случаев с Replace результат м.б. непредсказуем =’C: Budget- 2010[Co-Financing10.xls]1.1′!$AR$10 Результат
2 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
03.09.2012, 10:10 |
4 |
Согласен
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
03.09.2012, 13:00 [ТС] |
5 |
Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ? Добавлено через 32 минуты
Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ? P.S.не запускается макрос, требует объект «object required»
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
03.09.2012, 13:11 |
6 |
|||||||
Добавлено через 5 минут
1 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||||||
03.09.2012, 13:24 |
7 |
|||||||
Добавлено через 4 минуты
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
03.09.2012, 14:32 |
8 |
Все-таки важно пробегать циклом только по ячейкам с формулами, иначе константы тоже будут заменяться, например 910 на 914.
1 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
03.09.2012, 14:43 |
9 |
|||
Казанский,
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
03.09.2012, 14:51 |
10 |
|||||||
Проще
Но я же приводил выше код для цикла по ячейкам с формулами — меньше работы:
2 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
03.09.2012, 15:37 [ТС] |
11 |
Не работает кнопка в моем Excel 2003. Выдает ошибку типа нарушения в » Advanced Find and Replace» Able bits.com и предлагает купить эту программку и инсталлировать ее… Как этот скрипт переписать в просто в макрос.. без кнопки тогда ? Действительно, как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется, как раз, как в примере, который он привел.. И еще на один момент обратил внимание..если надо заменить ОДНОЗНАЧНОЕ число например 9 на 13,то замена не производится .. Скрипт начинает считать и довольно быстро завершается, но ошибку не выдает, может что-то и меняет (сразу не определишь -большой массив), но полноценной замены не производится..во всех тех местах, где это требуется..
0 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
03.09.2012, 15:53 |
12 |
|||
Проверял в своём 2003. как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется Проверяет и меняет только последние символы в количестве равном количесву символов в первом числе на второе число. Меняет только в формулах. Переделать в макрос? Легко!
1 |
Dmitrii 2617 / 547 / 109 Регистрация: 21.03.2012 Сообщений: 1,051 |
||||
03.09.2012, 16:36 |
13 |
|||
Регулярные выражения должны сработать быстрее, чем строковые функции. Пример:
1 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
03.09.2012, 17:12 |
14 |
И что, если заменять нечего, все равно присваивать формулу? Тогда уж .Test допишите.
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
03.09.2012, 18:23 [ТС] |
15 |
Рябята..вроде зработало..Щас еще поизучаю и наишу.. респект и уважуха..!!!!!!
0 |
2617 / 547 / 109 Регистрация: 21.03.2012 Сообщений: 1,051 |
|
03.09.2012, 22:48 |
16 |
Казанский, это лишь пример.
0 |
Вставка формулы со ссылками в стиле A1 и R1C1 в ячейку (диапазон) из кода VBA Excel. Свойства Range.FormulaLocal и Range.FormulaR1C1Local.
Свойство Range.FormulaLocal
FormulaLocal — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле A1.
В качестве примера будем использовать диапазон A1:E10, заполненный числами, которые необходимо сложить построчно и результат отобразить в столбце F:
Примеры вставки формул суммирования в ячейку F1:
Range(«F1»).FormulaLocal = «=СУММ(A1:E1)» Range(«F1»).FormulaLocal = «=СУММ(A1;B1;C1;D1;E1)» |
Пример вставки формул суммирования со ссылками в стиле A1 в диапазон F1:F10:
Sub Primer1() Dim i As Byte For i = 1 To 10 Range(«F» & i).FormulaLocal = «=СУММ(A» & i & «:E» & i & «)» Next End Sub |
В этой статье я не рассматриваю свойство Range.Formula, но если вы решите его применить для вставки формулы в ячейку, используйте англоязычные функции, а в качестве разделителей аргументов — запятые (,) вместо точек с запятой (;):
Range(«F1»).Formula = «=SUM(A1,B1,C1,D1,E1)» |
После вставки формула автоматически преобразуется в локальную (на языке пользователя).
Свойство Range.FormulaR1C1Local
FormulaR1C1Local — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле R1C1.
Формулы со ссылками в стиле R1C1 можно вставлять в ячейки рабочей книги Excel, в которой по умолчанию установлены ссылки в стиле A1. Вставленные ссылки в стиле R1C1 будут автоматически преобразованы в ссылки в стиле A1.
Примеры вставки формул суммирования со ссылками в стиле R1C1 в ячейку F1 (для той же таблицы):
‘Абсолютные ссылки в стиле R1C1: Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1:R1C5)» Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1;R1C2;R1C3;R1C4;R1C5)» ‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range(«F1»).FormulaR1C1Local = «=СУММ(RC1:RC5)» Range(«F1»).FormulaR1C1Local = «=СУММ(RC1;RC2;RC3;RC4;RC5)» ‘Относительные ссылки в стиле R1C1: Range(«F1»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])» Range(«F2»).FormulaR1C1Local = «=СУММ(RC[-5];RC[-4];RC[-3];RC[-2];RC[-1])» |
Пример вставки формул суммирования со ссылками в стиле R1C1 в диапазон F1:F10:
‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC1:RC5)» ‘Относительные ссылки в стиле R1C1: Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])» |
Так как формулы с относительными ссылками и относительными по строкам ссылками в стиле R1C1 для всех ячеек столбца F одинаковы, их можно вставить сразу, без использования цикла, во весь диапазон.
В данной статье представлены разные варианты макросов для быстрой замены формул на значения в документах MS Excel
Заменить формулу на значение можно следующим образом: выделяем нужную ячейку, нажимаем F2, F9, Enter и в текущей ячейке формула заменится на значение. Если таких ячеек много, то это превратится в долгий и рутинный процесс. На помощь придут следующие макросы
Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl):
Sub Formulas_To_Values_Selection() 'преобразование формул в значения в выделенном диапазоне Dim smallrng As Range For Each smallrng In Selection.Areas smallrng.Value = smallrng.Value Next smallrng End Sub
Макрос для превращения всех формул в значения на текущем листе:
Sub Formulas_To_Values_Sheet()
'преобразование формул в значения на текущем листе
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
End Sub
Макрос для превращения всех формул в книге и на всех листах:
Sub Formulas_To_Values_Book()
'преобразование формул в значения во всей книге
For Each ws In ActiveWorkbook.Worksheets
ws.UsedRange.Value = ws.UsedRange.Value
Next ws
End Sub
Данный макрос меняет все формулы на значения во всех файлах на всех листах в указанной папке
Sub УдалитьВсеФормулыВПапке() Dim fd As FileDialog Dim iPath As String Dim iFileName As String Dim iSheet As Worksheet Set fd = Application.FileDialog(msoFileDialogFolderPicker) ChDir "C:" With fd .ButtonName = "Выбрать" If .Show = -1 Then iPath = .SelectedItems(1) & Application.PathSeparator Else Exit Sub End If End With Set fd = Nothing if MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub If MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub With Application .ScreenUpdating = False .Calculation = xlCalculationManual '.EnableEvents = False iFileName = Dir(iPath & "*.xls") Do While iFileName$ <> "" With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0) For Each iSheet In .Sheets With iSheet.UsedRange .Value = .Value End With Next .Close saveChanges:=True End With iFileName$ = Dir Loop .EnableEvents = True .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец" End Sub
Код нужных макросов можно скопировать в новый модуль вашего файла. Нажимаем Alt+F11 чтобы попасть в Visual Basic, далее Insert – Module чтобы попасть в Visual Basic, далее Insert – Module. Запускать их потом можно через вкладку Разработчик – Макросы (Developer – Macros) или сочетанием клавиш Alt+F8. Макросы будут работать в любой книге, пока открыт файл, где они хранятся.
Внимание! Действия выполненные макросом невозможно отменить – применяйте их с осторожностью.
Изменение формулы макросом: добавление и удаление слагаемых |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |