Запись значения формулы из макроса
danilka51
Дата: Среда, 08.05.2013, 13:01 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Есть книга, в ней записан макрос с формулой, этот макрос вставляет формулу в ячейку (допустим A10). Внимание вопрос: как изменить код, чтобы в ячейку вносились только вычисления, а не сама формула.
Range("A10" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)"
Есть книга, в ней записан макрос с формулой, этот макрос вставляет формулу в ячейку (допустим A10). Внимание вопрос: как изменить код, чтобы в ячейку вносились только вычисления, а не сама формула.
Range("A10" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)"
danilka51
Сообщение отредактировал danilka51 - Среда, 08.05.2013, 13:03
Ответить
Сообщение Есть книга, в ней записан макрос с формулой, этот макрос вставляет формулу в ячейку (допустим A10). Внимание вопрос: как изменить код, чтобы в ячейку вносились только вычисления, а не сама формула. [vba]
Range("A10").FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)"
[/vba] Автор - danilka51 Дата добавления - 08.05.2013 в 13:01
Serge_007
Дата: Среда, 08.05.2013, 13:28 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Dim funcsRes
funcsRes = WorksheetFunction.Sum(Range("a1:a9" ))
Range("A10" ) = funcsRes
Dim funcsRes
funcsRes = WorksheetFunction.Sum(Range("a1:a9" ))
Range("A10" ) = funcsRes
Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение [vba]
Dim funcsRes funcsRes = WorksheetFunction.Sum(Range("a1:a9")) Range("A10") = funcsRes
[/vba] Автор - Serge_007 Дата добавления - 08.05.2013 в 13:28
danilka51
Дата: Среда, 08.05.2013, 14:40 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Не успел разобраться с тем как предложил сделать Serge_007, сделал по примеру с темы Макрос Replace_by_VAL - заменить формулы на значения. Получилось может и не красиво но работает.
Range("I10" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)"
Range("B29" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(I29;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$E$4:$E$237;0);7)"
On Error GoTo A
ACal = Application.Calculation
Application.Calculation = xlCalculationManual
With ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible)
If .Count = 1 Then
[A10:AA57] .Select
End If
End With
Selection.Value = Selection.Value
A:
Application.Calculation = ACal
Не успел разобраться с тем как предложил сделать Serge_007, сделал по примеру с темы Макрос Replace_by_VAL - заменить формулы на значения. Получилось может и не красиво но работает.
Range("I10" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)"
Range("B29" ).FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(I29;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$E$4:$E$237;0);7)"
On Error GoTo A
ACal = Application.Calculation
Application.Calculation = xlCalculationManual
With ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible)
If .Count = 1 Then
[A10:AA57] .Select
End If
End With
Selection.Value = Selection.Value
A:
Application.Calculation = ACal
danilka51
Ответить
Сообщение Не успел разобраться с тем как предложил сделать Serge_007, сделал по примеру с темы Макрос Replace_by_VAL - заменить формулы на значения. Получилось может и не красиво но работает. [vba]
Range("I10").FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(O12;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$R$4:$R$237;0);4)" Range("B29").FormulaLocal = "=ИНДЕКС('[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$A$4:$R$237;ПОИСКПОЗ(I29;'[Главный журнал КИП ЦЭС-2.xlsx]Установочные места счетчики'!$E$4:$E$237;0);7)" On Error GoTo A ACal = Application.Calculation Application.Calculation = xlCalculationManual With ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible ) If .Count = 1 Then [A10:AA57 ].Select End If End With Selection.Value = Selection.Value A : Application.Calculation = ACal
[/vba] Автор - danilka51 Дата добавления - 08.05.2013 в 14:40
Serge_007
Дата: Среда, 08.05.2013, 14:52 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (danilka51 писал(а)):
Не успел разобраться с тем как предложил сделать Serge_007
Ага, мой способ гораздо сложней Вот код с комментариями:
Sub danilka51()
Dim funcsRes 'объявляем переменную
funcsRes = WorksheetFunction.Sum(Range("a1:a9" ))
'в переменную записываем результат работы функции листа
Range("A10" ) = funcsRes 'в указанную ячейку заносим значение переменной
End Sub
Цитата (danilka51 писал(а)):
Не успел разобраться с тем как предложил сделать Serge_007
Ага, мой способ гораздо сложней Вот код с комментариями:
Sub danilka51()
Dim funcsRes 'объявляем переменную
funcsRes = WorksheetFunction.Sum(Range("a1:a9" ))
'в переменную записываем результат работы функции листа
Range("A10" ) = funcsRes 'в указанную ячейку заносим значение переменной
End Sub
Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (danilka51 писал(а)):
Не успел разобраться с тем как предложил сделать Serge_007
Ага, мой способ гораздо сложней Вот код с комментариями: [vba]
Sub danilka51 () Dim funcsRes 'объявляем переменную funcsRes = WorksheetFunction.Sum(Range("a1:a9")) 'в переменную записываем результат работы функции листа Range("A10") = funcsRes 'в указанную ячейку заносим значение переменной End Sub
[/vba]Автор - Serge_007 Дата добавления - 08.05.2013 в 14:52
danilka51
Дата: Среда, 08.05.2013, 21:58 |
Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
funcsRes = WorksheetFunction.Index(("A2:L200" ), Match("B15" , ("E2:E200" ), 0 ), 3 )
ругается на Match
funcsRes = WorksheetFunction.Index(("A2:L200" ), Match("B15" , ("E2:E200" ), 0 ), 3 )
ругается на Matchdanilka51
Ответить
Сообщение [vba]
funcsRes = WorksheetFunction.Index(("A2:L200"), Match("B15", ("E2:E200"), 0), 3)
[/vba] ругается на Match Автор - danilka51 Дата добавления - 08.05.2013 в 21:58
RAN
Дата: Среда, 08.05.2013, 22:22 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Как вариант
funcsResfuncsRes = WorksheetFunction. Match("B15" , ("E2:E200" ), 0 )
funcsRes = WorksheetFunction.Index(("A2:L200" ), funcsResfuncsRes, 3 )
Но файла нет. А на нет и проверки нет.
Как вариант
funcsResfuncsRes = WorksheetFunction. Match("B15" , ("E2:E200" ), 0 )
funcsRes = WorksheetFunction.Index(("A2:L200" ), funcsResfuncsRes, 3 )
Но файла нет. А на нет и проверки нет. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Как вариант [vba]
funcsResfuncsRes = WorksheetFunction. Match("B15", ("E2:E200"), 0) funcsRes = WorksheetFunction.Index(("A2:L200"), funcsResfuncsRes , 3)
[/vba] Но файла нет. А на нет и проверки нет. Автор - RAN Дата добавления - 08.05.2013 в 22:22
Hugo
Дата: Среда, 08.05.2013, 22:26 |
Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3710
Репутация:
794
±
Замечаний:
0% ±
365
Я бы не парился. Занёс кодом формулы в эти две ячейки, они пересчитались (или насильно пересчитал, если пересчёт в ручном режиме), затем заменил на значения. Примерно как во втором Вашем коде, но убиваем формулы так:
Range("I10" ).value=Range("I10" ).value
Range("B29" ).value=Range("B29" ).value
Я бы не парился. Занёс кодом формулы в эти две ячейки, они пересчитались (или насильно пересчитал, если пересчёт в ручном режиме), затем заменил на значения. Примерно как во втором Вашем коде, но убиваем формулы так:
Range("I10" ).value=Range("I10" ).value
Range("B29" ).value=Range("B29" ).value
Hugo
webmoney: E265281470651 Z422237915069 USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
Ответить
Сообщение Я бы не парился. Занёс кодом формулы в эти две ячейки, они пересчитались (или насильно пересчитал, если пересчёт в ручном режиме), затем заменил на значения. Примерно как во втором Вашем коде, но убиваем формулы так: [vba]
Range("I10").value =Range("I10").value Range("B29").value =Range("B29").value
[/vba] Автор - Hugo Дата добавления - 08.05.2013 в 22:26
danilka51
Дата: Среда, 08.05.2013, 22:42 |
Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Цитата (RAN писал(а)):
Но файла нет. А на нет и проверки нет.
У меня файла тоже нет, он на работе остался, пробую на почти пустом листе, но пока что- то не клеится. Цитата (Hugo писал(а)):
Я бы не парился. Занёс кодом формулы в эти две ячейки
я бы тоже не парился, но там около 15 формул может будет и больше и хочется все по короче, но возьму на вооружение предложенный вариант.
Цитата (RAN писал(а)):
Но файла нет. А на нет и проверки нет.
У меня файла тоже нет, он на работе остался, пробую на почти пустом листе, но пока что- то не клеится. Цитата (Hugo писал(а)):
Я бы не парился. Занёс кодом формулы в эти две ячейки
я бы тоже не парился, но там около 15 формул может будет и больше и хочется все по короче, но возьму на вооружение предложенный вариант.danilka51
Ответить
Сообщение Цитата (RAN писал(а)):
Но файла нет. А на нет и проверки нет.
У меня файла тоже нет, он на работе остался, пробую на почти пустом листе, но пока что- то не клеится. Цитата (Hugo писал(а)):
Я бы не парился. Занёс кодом формулы в эти две ячейки
я бы тоже не парился, но там около 15 формул может будет и больше и хочется все по короче, но возьму на вооружение предложенный вариант.Автор - danilka51 Дата добавления - 08.05.2013 в 22:42
Serge_007
Дата: Среда, 08.05.2013, 22:48 |
Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (danilka51 писал(а)):
файла тоже нет, он на работе остался
А он и не нужен. Нужен аналогичный файл-пример Цитата (danilka51 писал(а)):
ругается на Match
А на листе если такую же формулу ввести что получится?
Цитата (danilka51 писал(а)):
файла тоже нет, он на работе остался
А он и не нужен. Нужен аналогичный файл-пример Цитата (danilka51 писал(а)):
ругается на Match
А на листе если такую же формулу ввести что получится?Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (danilka51 писал(а)):
файла тоже нет, он на работе остался
А он и не нужен. Нужен аналогичный файл-пример Цитата (danilka51 писал(а)):
ругается на Match
А на листе если такую же формулу ввести что получится?Автор - Serge_007 Дата добавления - 08.05.2013 в 22:48
danilka51
Дата: Среда, 08.05.2013, 22:55 |
Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Цитата (Serge_007 писал(а)):
А на листе если такую же формулу ввести что получится?
так ActiveCell.FormulaR1C1 = "=INDEX(CMO_приборы1!R[-9]C[-1]:R[72]C[10],MATCH(R[4]C,CMO_приборы1!R[-9]C[3]:R[251]C[3],0),3)" все получается, а так Index(("A2:L200"), Match("N16", ("E2:E200"), 0), 3) встает на , перед Match.
Цитата (Serge_007 писал(а)):
А на листе если такую же формулу ввести что получится?
так ActiveCell.FormulaR1C1 = "=INDEX(CMO_приборы1!R[-9]C[-1]:R[72]C[10],MATCH(R[4]C,CMO_приборы1!R[-9]C[3]:R[251]C[3],0),3)" все получается, а так Index(("A2:L200"), Match("N16", ("E2:E200"), 0), 3) встает на , перед Match.danilka51
Ответить
Сообщение Цитата (Serge_007 писал(а)):
А на листе если такую же формулу ввести что получится?
так ActiveCell.FormulaR1C1 = "=INDEX(CMO_приборы1!R[-9]C[-1]:R[72]C[10],MATCH(R[4]C,CMO_приборы1!R[-9]C[3]:R[251]C[3],0),3)" все получается, а так Index(("A2:L200"), Match("N16", ("E2:E200"), 0), 3) встает на , перед Match.Автор - danilka51 Дата добавления - 08.05.2013 в 22:55
danilka51
Дата: Среда, 08.05.2013, 23:01 |
Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
файл для проб и ошибок
К сообщению приложен файл:
--.xls
(77.0 Kb)
Сообщение отредактировал danilka51 - Среда, 08.05.2013, 23:03
Ответить
Сообщение файл для проб и ошибок Автор - danilka51 Дата добавления - 08.05.2013 в 23:01
Serge_007
Дата: Среда, 08.05.2013, 23:50 |
Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Я спрашивал про формулу в Excel, на листе Ладно, уже не важно. Раз есть файл, то всё гораздо проще. Вот так будет работат:
Sub Макрос1()
Dim FR as String
FR = WorksheetFunction.Index(Range("A2:L200" ), WorksheetFunction.Match(Range("N16" ), Range("E2:E200" ), 0 ), 3 )
Range("N15" ) = FR
End Sub
Я спрашивал про формулу в Excel, на листе Ладно, уже не важно. Раз есть файл, то всё гораздо проще. Вот так будет работат:
Sub Макрос1()
Dim FR as String
FR = WorksheetFunction.Index(Range("A2:L200" ), WorksheetFunction.Match(Range("N16" ), Range("E2:E200" ), 0 ), 3 )
Range("N15" ) = FR
End Sub
Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Я спрашивал про формулу в Excel, на листе Ладно, уже не важно. Раз есть файл, то всё гораздо проще. Вот так будет работат: [vba]
Sub Макрос1() Dim FR as String FR = WorksheetFunction.Index(Range("A2:L200"), WorksheetFunction.Match(Range("N16"), Range("E2:E200"), 0), 3) Range("N15") = FR End Sub
[/vba] Автор - Serge_007 Дата добавления - 08.05.2013 в 23:50
danilka51
Дата: Четверг, 09.05.2013, 00:17 |
Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
блиин, я же так
WorksheetFunction.Index(Range("A2:L200" ), WorksheetFunction.Match(Range("N16" ), Range("E2:E200" ), 0 ), 3 )
уже делал, только через funcsRes и не шло, а так все заработало, большое спасибо.
блиин, я же так
WorksheetFunction.Index(Range("A2:L200" ), WorksheetFunction.Match(Range("N16" ), Range("E2:E200" ), 0 ), 3 )
уже делал, только через funcsRes и не шло, а так все заработало, большое спасибо. danilka51
Ответить
Сообщение блиин, я же так [vba]
WorksheetFunction.Index(Range("A2:L200"), WorksheetFunction.Match(Range("N16"), Range("E2:E200"), 0), 3)
[/vba] уже делал, только через funcsRes и не шло, а так все заработало, большое спасибо. Автор - danilka51 Дата добавления - 09.05.2013 в 00:17
Serge_007
Дата: Четверг, 09.05.2013, 00:22 |
Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (danilka51 писал(а)):
...через funcsRes и не шло...
funcsRes - это имя переменной. Ничего не изменится, если его поменять на FR или на danilka51 , например
Цитата (danilka51 писал(а)):
...через funcsRes и не шло...
funcsRes - это имя переменной. Ничего не изменится, если его поменять на FR или на danilka51 , например Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (danilka51 писал(а)):
...через funcsRes и не шло...
funcsRes - это имя переменной. Ничего не изменится, если его поменять на FR или на danilka51 , например Автор - Serge_007 Дата добавления - 09.05.2013 в 00:22
danilka51
Дата: Четверг, 09.05.2013, 00:23 |
Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Уже понял. я пропустил Range, всего-то
Уже понял. я пропустил Range, всего-то danilka51
Ответить
Сообщение Уже понял. я пропустил Range, всего-то Автор - danilka51 Дата добавления - 09.05.2013 в 00:23
Serge_007
Дата: Четверг, 09.05.2013, 00:25 |
Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (danilka51 писал(а)):
я пропустил Range
Дело не только в Range, Вы функцию листа не определили WorksheetFunction. Match
Цитата (danilka51 писал(а)):
я пропустил Range
Дело не только в Range, Вы функцию листа не определили WorksheetFunction. MatchSerge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (danilka51 писал(а)):
я пропустил Range
Дело не только в Range, Вы функцию листа не определили WorksheetFunction. MatchАвтор - Serge_007 Дата добавления - 09.05.2013 в 00:25
danilka51
Дата: Четверг, 09.05.2013, 00:31 |
Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Цитата (Serge_007 писал(а)):
Вы функцию листа не определили WorksheetFunction.Match
определял, и именно не вставил Range
Цитата (Serge_007 писал(а)):
Вы функцию листа не определили WorksheetFunction.Match
определял, и именно не вставил Rangedanilka51
Ответить
Сообщение Цитата (Serge_007 писал(а)):
Вы функцию листа не определили WorksheetFunction.Match
определял, и именно не вставил RangeАвтор - danilka51 Дата добавления - 09.05.2013 в 00:31
danilka51
Дата: Четверг, 09.05.2013, 00:38 |
Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
в файле этого не было, что-то зависло, а сохраниться не успел
в файле этого не было, что-то зависло, а сохраниться не успел danilka51
Ответить
Сообщение в файле этого не было, что-то зависло, а сохраниться не успел Автор - danilka51 Дата добавления - 09.05.2013 в 00:38
danilka51
Дата: Четверг, 09.05.2013, 00:46 |
Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Ну, если я буду выкладывать всю ересь, которую придумаю, боюсь ваш разум поплывет
Ну, если я буду выкладывать всю ересь, которую придумаю, боюсь ваш разум поплывет danilka51
Ответить
Сообщение Ну, если я буду выкладывать всю ересь, которую придумаю, боюсь ваш разум поплывет Автор - danilka51 Дата добавления - 09.05.2013 в 00:46
danilka51
Дата: Воскресенье, 12.05.2013, 23:29 |
Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация:
5
±
Замечаний:
0% ±
Ребят, возникла небольшая проблема, описание в файле 112, кто чем может, может поможет? )))
Ребят, возникла небольшая проблема, описание в файле 112, кто чем может, может поможет? ))) danilka51
Сообщение отредактировал danilka51 - Воскресенье, 12.05.2013, 23:34
Ответить
Сообщение Ребят, возникла небольшая проблема, описание в файле 112, кто чем может, может поможет? ))) Автор - danilka51 Дата добавления - 12.05.2013 в 23:29