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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Вывод в ячейку результата формулы
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


При большом количестве поисковых данных замедляется процесс поиска.
Подскажите пожалуйста как в ячейку выводить результат, а не формулу.
Заранее благодарен за помощь
 
Ответить
СообщениеДоброго времени суток, уважаемые форумчане!
Прошу Вашей помощи:
Использую такой макрос для подсчета количества значений:
[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 решается автозаполнением по всем строкам, а не вставкой формулы в каждую ячейку.
Однако при большом количестве расчетов, общее время может быть достаточно большим.


Замечательный Временно просто медведь , процентов на 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
Цитата rtv206, 29.01.2022 в 20:44, в сообщении № 3 ( писал(а)):
Как сделать макросом автозаполнение?

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

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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 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



Замечательный Временно просто медведь , процентов на 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
Дата добавления - 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


Если нет, то нужно писать код который посчитает то, что нужно, там, где надо, и выведет результат туда, куда требуется.


Замечательный Временно просто медведь , процентов на 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
Дата добавления - 30.01.2022 в 23:40
bmv98rus Дата: Понедельник, 31.01.2022, 14:27 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 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])"
Цитата rtv206, 30.01.2022 в 22:15, в сообщении № 5 ( писал(а)):
Так вот и нужно чтобы формулы не было.
А расчет происходил в коде

Для этого необходимо производить все вычисления в коде.
Цитата bmv98rus, 30.01.2022 в 22:48, в сообщении № 8 ( писал(а)):
.AutoFill Destination

Ведмедик, а пошто?
Цитата _Igor_61, 30.01.2022 в 19:49, в сообщении № 4 ( писал(а)):
Range(отсюда до сюда)=Formula(такая-то)

Это, конечно, не совсем то, но

Range(отсюда до сюда.FormulaR1C1 = " Правильная FormulaR1C1"


вполне себе работает.


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

Для этого необходимо производить все вычисления в коде.
Цитата bmv98rus, 30.01.2022 в 22:48, в сообщении № 8 ( писал(а)):
.AutoFill Destination

Ведмедик, а пошто?
Цитата _Igor_61, 30.01.2022 в 19:49, в сообщении № 4 ( писал(а)):
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
Цитата RAN, 31.01.2022 в 19:11, в сообщении № 11 ( писал(а)):
Ведмедик, а пошто?
согласен, в нотации 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



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

Сообщение отредактировал bmv98rus - Вторник, 01.02.2022, 12:46
 
Ответить
Сообщение
Цитата RAN, 31.01.2022 в 19:11, в сообщении № 11 ( писал(а)):
Ведмедик, а пошто?
согласен, в нотации 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
Дата добавления - 01.02.2022 в 21:25
  • Страница 1 из 1
  • 1
Поиск:

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