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

 

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

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Запись значения формулы из макроса
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)"



Сообщение отредактировал 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



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

[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

Вот код с комментариями:

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



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

funcsRes = WorksheetFunction.Index(("A2:L200"), Match("B15", ("E2:E200"), 0), 3)


ругается на 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
Как вариант

funcsResfuncsRes  = WorksheetFunction. Match("B15", ("E2:E200"), 0)
funcsRes = WorksheetFunction.Index(("A2:L200"), funcsResfuncsRes, 3)


Но файла нет. А на нет и проверки нет.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеКак вариант
[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



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

Ладно, уже не важно. Раз есть файл, то всё гораздо проще. Вот так будет работат:

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



Ю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 и не шло, а так все заработало, большое спасибо.
 
Ответить
Сообщениеблиин, я же так [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
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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