Вывод в ячейку результата формулы
rtv206
Дата: Суббота, 29.01.2022, 19:54 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Доброго времени суток, уважаемые форумчане! Прошу Вашей помощи: Использую такой макрос для подсчета количества значений:
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
При большом количестве поисковых данных замедляется процесс поиска. Подскажите пожалуйста как в ячейку выводить результат, а не формулу. Заранее благодарен за помощь
Доброго времени суток, уважаемые форумчане! Прошу Вашей помощи: Использую такой макрос для подсчета количества значений:
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
При большом количестве поисковых данных замедляется процесс поиска. Подскажите пожалуйста как в ячейку выводить результат, а не формулу. Заранее благодарен за помощь rtv206
Ответить
Сообщение Доброго времени суток, уважаемые форумчане! Прошу Вашей помощи: Использую такой макрос для подсчета количества значений: [vba]
Sub Макрос2()Dim lr As LongSet shSrc = Worksheets("Лист3")lr = shSrc.Cells(shSrc.Rows.Count ; "A").End(xlUp ).rowDim r As Longr = 4Do While r <= lrWorksheets("Лист3").Cells(r ; 2).Value = "=СЧЁТЕСЛИ(Лист1!C[37],Лист3!RC[8])"Worksheets("Лист3").Cells(r ; 3).Value = "=СЧЁТЕСЛИ(Лист1!C[36],Лист3!RC[8])"Worksheets("Лист3").Cells(r ; 4).Value = "=СЧЁТЕСЛИ(Лист1!C[35],Лист3!RC[8])"Worksheets("Лист3").Cells(r ; 5).Value = "=СЧЁТЕСЛИ(Лист1!C[34],Лист3!RC[8])"r = r + 1Loop
[/vba] При большом количестве поисковых данных замедляется процесс поиска. Подскажите пожалуйста как в ячейку выводить результат, а не формулу. Заранее благодарен за помощь Автор - rtv206 Дата добавления - 29.01.2022 в 19:54
bmv98rus
Дата: Суббота, 29.01.2022, 20:23 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация:
772
±
Замечаний:
0% ±
Excel 2013/2016
тут два вопроса. 1. нужно ли вам оставить формулы, чтоб потом это позволило менять данные и иметь результат расчтеа 2. как чуток ускорить работу макроса. п. 2 решается автозаполнением по всем строкам, а не вставкой формулы в каждую ячейку. Однако при большом количестве расчетов, общее время может быть достаточно большим.
тут два вопроса. 1. нужно ли вам оставить формулы, чтоб потом это позволило менять данные и иметь результат расчтеа 2. как чуток ускорить работу макроса. п. 2 решается автозаполнением по всем строкам, а не вставкой формулы в каждую ячейку. Однако при большом количестве расчетов, общее время может быть достаточно большим. bmv98rus
Замечательный Временно просто медведь , процентов на 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
Ответить
Сообщение 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
Ответить
Сообщение Как сделать макросом автозаполнение?
Range(отсюда до сюда)=Formula(такая-то) Local - по обстановке Правда, это не имеет никакого отношения к заявленной теме... Для решения задачи, обозначенной в теме не хватает самой малости - файла с примером. Может там формула и нафиг не нужна, все можно в коде посчитать.. Автор - _Igor_61 Дата добавления - 30.01.2022 в 19:49
rtv206
Дата: Воскресенье, 30.01.2022, 22:15 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Igor_61 , Файл прикладываю. Так вот и нужно чтобы формулы не было. А расчет происходил в коде
_Igor_61 , Файл прикладываю. Так вот и нужно чтобы формулы не было. А расчет происходил в кодеrtv206
Ответить
Сообщение _Igor_61 , Файл прикладываю. Так вот и нужно чтобы формулы не было. А расчет происходил в кодеАвтор - rtv206 Дата добавления - 30.01.2022 в 22:15
bmv98rus
Дата: Воскресенье, 30.01.2022, 22:26 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация:
772
±
Замечаний:
0% ±
Excel 2013/2016
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
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
bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Ответить
Сообщение [vba]
Sub Макрос2()Application.EnableEvents = FalseWith Worksheets("Лист3") .Cells(4; 2).FormulaR1C1 = "=СЧЁТЕСЛИ(Лист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 :=xlFillDefaultEnd WithApplication.EnableEvents = ТrueApplication.CalculateEnd Sub
[/vba] Автор - bmv98rus Дата добавления - 30.01.2022 в 22:26
rtv206
Дата: Воскресенье, 30.01.2022, 22:41 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
bmv98rus , в ячейках В-Е всё так же продолжает вводится формула. А необходимо чтобы был результат подсёта, без формулы в ячейке
bmv98rus , в ячейках В-Е всё так же продолжает вводится формула. А необходимо чтобы был результат подсёта, без формулы в ячейкеrtv206
Ответить
Сообщение bmv98rus , в ячейках В-Е всё так же продолжает вводится формула. А необходимо чтобы был результат подсёта, без формулы в ячейкеАвтор - rtv206 Дата добавления - 30.01.2022 в 22:41
bmv98rus
Дата: Воскресенье, 30.01.2022, 22:48 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация:
772
±
Замечаний:
0% ±
Excel 2013/2016
Длительность операции приемлема? Если да, то
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
End Sub
Если нет, то нужно писать код который посчитает то, что нужно, там, где надо, и выведет результат туда, куда требуется.
Длительность операции приемлема? Если да, то
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
End Sub
Если нет, то нужно писать код который посчитает то, что нужно, там, где надо, и выведет результат туда, куда требуется. bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Сообщение отредактировал bmv98rus - Понедельник, 31.01.2022, 14:26
Ответить
Сообщение Длительность операции приемлема? Если да, то [vba]
Sub Макрос2()Application.EnableEvents = FalseWith Worksheets("Лист3") .Cells(4; 2).FormulaR1C1 = "=СЧЁТЕСЛИ(Лист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)).valueEnd WithApplication.EnableEvents = Тrue[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
Ответить
Сообщение bmv98rus , благодарю за помощь!Автор - rtv206 Дата добавления - 30.01.2022 в 23:40
bmv98rus
Дата: Понедельник, 31.01.2022, 14:27 |
Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация:
772
±
Замечаний:
0% ±
Excel 2013/2016
rtv206 , там микро ошибка была. Range("B4:E4").Select - не нужен совсем.
rtv206 , там микро ошибка была. Range("B4:E4").Select - не нужен совсем.bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Ответить
Сообщение rtv206 , там микро ошибка была. Range("B4:E4").Select - не нужен совсем.Автор - bmv98rus Дата добавления - 31.01.2022 в 14:27
RAN
Дата: Понедельник, 31.01.2022, 19:11 |
Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
.Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"Так вот и нужно чтобы формулы не было. А расчет происходил в коде
Для этого необходимо производить все вычисления в коде. Ведмедик, а пошто?Range(отсюда до сюда)=Formula(такая-то)
Это, конечно, не совсем то, но
Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"
вполне себе работает.
.Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"Так вот и нужно чтобы формулы не было. А расчет происходил в коде
Для этого необходимо производить все вычисления в коде. Ведмедик, а пошто?Range(отсюда до сюда)=Formula(такая-то)
Это, конечно, не совсем то, но
Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"
вполне себе работает. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение .Cells(4, 2).FormulaR1C1 = "=COUNTIF(Лист1!C39,Лист3!RC[8])"Так вот и нужно чтобы формулы не было. А расчет происходил в коде
Для этого необходимо производить все вычисления в коде. Ведмедик, а пошто?Range(отсюда до сюда)=Formula(такая-то)
Это, конечно, не совсем то, но [vba]
Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"
[/vba] вполне себе работает. Автор - RAN Дата добавления - 31.01.2022 в 19:11
bmv98rus
Дата: Вторник, 01.02.2022, 08:29 |
Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация:
772
±
Замечаний:
0% ±
Excel 2013/2016
согласен, в нотации R1C1 тут можно, да даже и нужно , так как быстрее получится. Лучше так.
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
согласен, в нотации R1C1 тут можно, да даже и нужно , так как быстрее получится. Лучше так.
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
bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Сообщение отредактировал bmv98rus - Вторник, 01.02.2022, 12:46
Ответить
Сообщение согласен, в нотации R1C1 тут можно, да даже и нужно , так как быстрее получится. Лучше так. [vba]
Sub Макрос2()Application.EnableEvents = FalseWith Worksheets("Лист3") With .Range(.Cells(4; 2); .Cells(.Cells(.Rows.Count ; "A").End(xlUp ).Row ; 5)) .FormulaR1C1 = "=СЧЁТЕСЛИ(Лист1!C39,Лист3!RC[8])" Application.Calculate .Value = .Value End WithEnd WithApplication.EnableEvents = ТrueEnd 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
Ответить
Сообщение bmv98rus , RAN , Благодарю!!!Автор - rtv206 Дата добавления - 01.02.2022 в 21:25