Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запись значения формулы из макроса - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись значения формулы из макроса
Запись значения формулы из макроса
danilka51 Дата: Среда, 08.05.2013, 13:01 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 5 ±
Замечаний: 0% ±

Есть книга, в ней записан макрос с формулой, этот макрос вставляет формулу в ячейку (допустим 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: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
[vba]
Код
Dim funcsRes
funcsRes = WorksheetFunction.Sum(Range("a1:a9"))
Range("A10") = funcsRes
[/vba]


Ю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 - заменить формулы на значения.
Получилось может и не красиво но работает.

[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]
 
Ответить
СообщениеНе успел разобраться с тем как предложил сделать 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

Ага, мой способ гораздо сложней biggrin

Вот код с комментариями:
[vba]
Код
Sub danilka51()
Dim funcsRes 'объявляем переменную
funcsRes = WorksheetFunction.Sum(Range("a1:a9"))
'в переменную записываем результат работы функции листа
Range("A10") = funcsRes 'в указанную ячейку заносим значение переменной
End Sub
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (danilka51)
Не успел разобраться с тем как предложил сделать Serge_007

Ага, мой способ гораздо сложней biggrin

Вот код с комментариями:
[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% ±

[vba]
Код
funcsRes = WorksheetFunction.Index(("A2:L200"), Match("B15", ("E2:E200"), 0), 3)
[/vba]
ругается на Match
 
Ответить
Сообщение[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
Репутация: 1163 ±
Замечаний: 0% ±

2010
Как вариант
[vba]
Код
funcsResfuncsRes  = WorksheetFunction. Match("B15", ("E2:E200"), 0)
funcsRes = WorksheetFunction.Index(("A2:L200"), funcsResfuncsRes, 3)
[/vba]
Но файла нет. А на нет и проверки нет.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКак вариант
[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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Я бы не парился. Занёс кодом формулы в эти две ячейки, они пересчитались (или насильно пересчитал, если пересчёт в ручном режиме), затем заменил на значения.
Примерно как во втором Вашем коде, но убиваем формулы так:
[vba]
Код
Range("I10").value=Range("I10").value
Range("B29").value=Range("B29").value
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЯ бы не парился. Занёс кодом формулы в эти две ячейки, они пересчитались (или насильно пересчитал, если пересчёт в ручном режиме), затем заменил на значения.
Примерно как во втором Вашем коде, но убиваем формулы так:
[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
Дата добавления - 08.05.2013 в 22:42
Serge_007 Дата: Среда, 08.05.2013, 22:48 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (danilka51)
файла тоже нет, он на работе остался
А он и не нужен. Нужен аналогичный файл-пример


Цитата (danilka51)
ругается на Match
А на листе если такую же формулу ввести что получится?


Ю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
Дата добавления - 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, на листе

Ладно, уже не важно. Раз есть файл, то всё гораздо проще. Вот так будет работат:
[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]


Ю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% ±

блиин, я же так [vba]
Код
WorksheetFunction.Index(Range("A2:L200"), WorksheetFunction.Match(Range("N16"), Range("E2:E200"), 0), 3)
[/vba] уже делал, только через funcsRes и не шло, а так все заработало, большое спасибо.
 
Ответить
Сообщениеблиин, я же так [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, например biggrin


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (danilka51)
...через funcsRes и не шло...
funcsRes - это имя переменной. Ничего не изменится, если его поменять на FR или на danilka51, например biggrin

Автор - Serge_007
Дата добавления - 09.05.2013 в 00:22
danilka51 Дата: Четверг, 09.05.2013, 00:23 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 5 ±
Замечаний: 0% ±

Уже понял. я пропустил Range, всего-то
 
Ответить
СообщениеУже понял. я пропустил Range, всего-то

Автор - danilka51
Дата добавления - 09.05.2013 в 00:23
Serge_007 Дата: Четверг, 09.05.2013, 00:25 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (danilka51)
я пропустил Range
Дело не только в Range, Вы функцию листа не определили WorksheetFunction.Match


Ю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

определял, и именно не вставил Range

Автор - danilka51
Дата добавления - 09.05.2013 в 00:31
danilka51 Дата: Четверг, 09.05.2013, 00:38 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 5 ±
Замечаний: 0% ±

в файле этого не было, что-то зависло, а сохраниться не успел
 
Ответить
Сообщениев файле этого не было, что-то зависло, а сохраниться не успел

Автор - danilka51
Дата добавления - 09.05.2013 в 00:38
danilka51 Дата: Четверг, 09.05.2013, 00:46 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 5 ±
Замечаний: 0% ±

Ну, если я буду выкладывать всю ересь, которую придумаю, боюсь ваш разум поплывет
 
Ответить
СообщениеНу, если я буду выкладывать всю ересь, которую придумаю, боюсь ваш разум поплывет

Автор - danilka51
Дата добавления - 09.05.2013 в 00:46
danilka51 Дата: Воскресенье, 12.05.2013, 23:29 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 5 ±
Замечаний: 0% ±

Ребят, возникла небольшая проблема, описание в файле 112, кто чем может, может поможет? )))
К сообщению приложен файл: 6590830.rar (40.2 Kb)


Сообщение отредактировал danilka51 - Воскресенье, 12.05.2013, 23:34
 
Ответить
СообщениеРебят, возникла небольшая проблема, описание в файле 112, кто чем может, может поможет? )))

Автор - danilka51
Дата добавления - 12.05.2013 в 23:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись значения формулы из макроса
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!