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

Вход

Регистрация

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

 

= Мир MS Excel/Вывод в ячейку результата формулы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод в ячейку результата формулы (Макросы/Sub)
Вывод в ячейку результата формулы
rtv206 Дата: Суббота, 29.01.2022, 19:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток, уважаемые форумчане!
Прошу Вашей помощи:
Использую такой макрос для подсчета количества значений:
[vba]
Код
Sub Макрос2()
Dim lr As Long
Set shSrc = Worksheets("Лист3")
lr = shSrc.Cells(shSrc.Rows.Count, "A").End(xlUp).row
Dim r As Long
r = 4
Do While r <= lr
Worksheets("Лист3").Cells(r, 2).Value = "=COUNTIF(Лист1!C[37],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 3).Value = "=COUNTIF(Лист1!C[36],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 4).Value = "=COUNTIF(Лист1!C[35],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 5).Value = "=COUNTIF(Лист1!C[34],Лист3!RC[8])"

r = r + 1
Loop
[/vba]
При большом количестве поисковых данных замедляется процесс поиска.
Подскажите пожалуйста как в ячейку выводить результат, а не формулу.
Заранее благодарен за помощь
 
Ответить
СообщениеДоброго времени суток, уважаемые форумчане!
Прошу Вашей помощи:
Использую такой макрос для подсчета количества значений:
[vba]
Код
Sub Макрос2()
Dim lr As Long
Set shSrc = Worksheets("Лист3")
lr = shSrc.Cells(shSrc.Rows.Count, "A").End(xlUp).row
Dim r As Long
r = 4
Do While r <= lr
Worksheets("Лист3").Cells(r, 2).Value = "=COUNTIF(Лист1!C[37],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 3).Value = "=COUNTIF(Лист1!C[36],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 4).Value = "=COUNTIF(Лист1!C[35],Лист3!RC[8])"
Worksheets("Лист3").Cells(r, 5).Value = "=COUNTIF(Лист1!C[34],Лист3!RC[8])"

r = r + 1
Loop
[/vba]
При большом количестве поисковых данных замедляется процесс поиска.
Подскажите пожалуйста как в ячейку выводить результат, а не формулу.
Заранее благодарен за помощь

Автор - rtv206
Дата добавления - 29.01.2022 в 19:54
bmv98rus Дата: Суббота, 29.01.2022, 20:23 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
тут два вопроса.
1. нужно ли вам оставить формулы, чтоб потом это позволило менять данные и иметь результат расчтеа
2. как чуток ускорить работу макроса.

п. 2 решается автозаполнением по всем строкам, а не вставкой формулы в каждую ячейку.
Однако при большом количестве расчетов, общее время может быть достаточно большим.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениетут два вопроса.
1. нужно ли вам оставить формулы, чтоб потом это позволило менять данные и иметь результат расчтеа
2. как чуток ускорить работу макроса.

п. 2 решается автозаполнением по всем строкам, а не вставкой формулы в каждую ячейку.
Однако при большом количестве расчетов, общее время может быть достаточно большим.

Автор - bmv98rus
Дата добавления - 29.01.2022 в 20:23
rtv206 Дата: Суббота, 29.01.2022, 20:44 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, іормулы оставлять не нужно. При изменении данных будет пересчет.
Как сделать макросом автозаполнение?
 
Ответить
Сообщениеbmv98rus, іормулы оставлять не нужно. При изменении данных будет пересчет.
Как сделать макросом автозаполнение?

Автор - rtv206
Дата добавления - 29.01.2022 в 20:44
_Igor_61 Дата: Воскресенье, 30.01.2022, 19:49 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Как сделать макросом автозаполнение?

Range(отсюда до сюда)=Formula(такая-то)
Local - по обстановке :)
Правда, это не имеет никакого отношения к заявленной теме... Для решения задачи, обозначенной в теме не хватает самой малости - файла с примером. Может там формула и нафиг не нужна, все можно в коде посчитать.. :)
 
Ответить
Сообщение
Как сделать макросом автозаполнение?

Range(отсюда до сюда)=Formula(такая-то)
Local - по обстановке :)
Правда, это не имеет никакого отношения к заявленной теме... Для решения задачи, обозначенной в теме не хватает самой малости - файла с примером. Может там формула и нафиг не нужна, все можно в коде посчитать.. :)

Автор - _Igor_61
Дата добавления - 30.01.2022 в 19:49
rtv206 Дата: Воскресенье, 30.01.2022, 22:15 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Igor_61, Файл прикладываю.
Так вот и нужно чтобы формулы не было.
А расчет происходил в коде
К сообщению приложен файл: 4122169.xlsm (26.6 Kb)
 
Ответить
Сообщение_Igor_61, Файл прикладываю.
Так вот и нужно чтобы формулы не было.
А расчет происходил в коде

Автор - rtv206
Дата добавления - 30.01.2022 в 22:15
bmv98rus Дата: Воскресенье, 30.01.2022, 22:26 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    .Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
    .Cells(4, 2).AutoFill Destination:=.Range(.Cells(4, 2), .Cells(4, 5)), Type:=xlFillDefault
    Range("B4:E4").Select
    .Range(.Cells(4, 2), .Cells(4, 5)).AutoFill Destination:=.Range(.Cells(4, 2), _
        .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)), Type:=xlFillDefault
End With
Application.EnableEvents = True
Application.Calculate
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    .Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
    .Cells(4, 2).AutoFill Destination:=.Range(.Cells(4, 2), .Cells(4, 5)), Type:=xlFillDefault
    Range("B4:E4").Select
    .Range(.Cells(4, 2), .Cells(4, 5)).AutoFill Destination:=.Range(.Cells(4, 2), _
        .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)), Type:=xlFillDefault
End With
Application.EnableEvents = True
Application.Calculate
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 30.01.2022 в 22:26
rtv206 Дата: Воскресенье, 30.01.2022, 22:41 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, в ячейках В-Е всё так же продолжает вводится формула.
А необходимо чтобы был результат подсёта, без формулы в ячейке
 
Ответить
Сообщениеbmv98rus, в ячейках В-Е всё так же продолжает вводится формула.
А необходимо чтобы был результат подсёта, без формулы в ячейке

Автор - rtv206
Дата добавления - 30.01.2022 в 22:41
bmv98rus Дата: Воскресенье, 30.01.2022, 22:48 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Длительность операции приемлема? Если да, то
[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    .Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
    .Cells(4, 2).AutoFill Destination:=.Range(.Cells(4, 2), .Cells(4, 5)), Type:=xlFillDefault
    ' Range("B4:E4").Select
    .Range(.Cells(4, 2), .Cells(4, 5)).AutoFill Destination:=.Range(.Cells(4, 2), _
        .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)), Type:=xlFillDefault
    Application.Calculate
    .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)).value=_
        .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)).value
End With
Application.EnableEvents = True[sub]
End Sub
[/vba]
Если нет, то нужно писать код который посчитает то, что нужно, там, где надо, и выведет результат туда, куда требуется.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 31.01.2022, 14:26
 
Ответить
СообщениеДлительность операции приемлема? Если да, то
[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    .Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
    .Cells(4, 2).AutoFill Destination:=.Range(.Cells(4, 2), .Cells(4, 5)), Type:=xlFillDefault
    ' Range("B4:E4").Select
    .Range(.Cells(4, 2), .Cells(4, 5)).AutoFill Destination:=.Range(.Cells(4, 2), _
        .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)), Type:=xlFillDefault
    Application.Calculate
    .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)).value=_
        .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5)).value
End With
Application.EnableEvents = True[sub]
End Sub
[/vba]
Если нет, то нужно писать код который посчитает то, что нужно, там, где надо, и выведет результат туда, куда требуется.

Автор - bmv98rus
Дата добавления - 30.01.2022 в 22:48
rtv206 Дата: Воскресенье, 30.01.2022, 23:40 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, благодарю за помощь!
 
Ответить
Сообщениеbmv98rus, благодарю за помощь!

Автор - rtv206
Дата добавления - 30.01.2022 в 23:40
bmv98rus Дата: Понедельник, 31.01.2022, 14:27 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
rtv206, там микро ошибка была. Range("B4:E4").Select - не нужен совсем.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеrtv206, там микро ошибка была. Range("B4:E4").Select - не нужен совсем.

Автор - bmv98rus
Дата добавления - 31.01.2022 в 14:27
RAN Дата: Понедельник, 31.01.2022, 19:11 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
.Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
Так вот и нужно чтобы формулы не было.
А расчет происходил в коде

Для этого необходимо производить все вычисления в коде.
.AutoFill Destination

Ведмедик, а пошто?
Range(отсюда до сюда)=Formula(такая-то)

Это, конечно, не совсем то, но
[vba]
Код
Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"
[/vba]
вполне себе работает.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение.Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
Так вот и нужно чтобы формулы не было.
А расчет происходил в коде

Для этого необходимо производить все вычисления в коде.
.AutoFill Destination

Ведмедик, а пошто?
Range(отсюда до сюда)=Formula(такая-то)

Это, конечно, не совсем то, но
[vba]
Код
Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"
[/vba]
вполне себе работает.

Автор - RAN
Дата добавления - 31.01.2022 в 19:11
bmv98rus Дата: Вторник, 01.02.2022, 08:29 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Ведмедик, а пошто?
согласен, в нотации R1C1 тут можно, да даже и нужно , так как быстрее получится. Лучше так.

[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    With .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5))
        .FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
        Application.Calculate
        .Value = .Value
    End With
End With
Application.EnableEvents = True
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 01.02.2022, 12:46
 
Ответить
Сообщение
Ведмедик, а пошто?
согласен, в нотации R1C1 тут можно, да даже и нужно , так как быстрее получится. Лучше так.

[vba]
Код
Sub Макрос2()
Application.EnableEvents = False
With Worksheets("Лист3")
    With .Range(.Cells(4, 2), .Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, 5))
        .FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"
        Application.Calculate
        .Value = .Value
    End With
End With
Application.EnableEvents = True
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 01.02.2022 в 08:29
rtv206 Дата: Вторник, 01.02.2022, 21:25 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, RAN, Благодарю!!!
 
Ответить
Сообщениеbmv98rus, RAN, Благодарю!!!

Автор - rtv206
Дата добавления - 01.02.2022 в 21:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод в ячейку результата формулы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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