powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расчет значений макросом по всей таблице
14 сообщений из 14, страница 1 из 1
Расчет значений макросом по всей таблице
    #34607148
Evrodiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла задача сделать расчет макросом, чтобы формулы не производили каждый раз расчет и не загружали программу.
Ситуация такова:
есть таблица, которая состоит из 23 столбцов и 50 строк, форумулы в строке 1, по все столбцам одниковы с строчками 2-50.
Нужно:
Хотелось бы сделать макрос, который будет расчитывать данные по таблице.
Например, просчитал 1 строчку , затем вторую , третью и т.д. ну или все вместе сразу.
В каждом столбце формулы разные,
Код: plaintext
{=СУММ(ЕСЛИ(иан=$F8;ЕСЛИ(МЕСЯЦ(дан)=МЕСЯЦ($B8);ЕСЛИ(ГОД(дан)=ГОД($B8);ван))))/ 435 }
но впринципе, если будет вариант как решить расчет с примерно такой формулой, то дальше додумаюсь.
С чего начать ума не приложу :( пробывал делать рекодрсетом, но таким способом расчет траблицы занимает очень много времени.
Буду очень благодарен, за любую помощь в разрешение этой задачи.
С уважением, Evro
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34607160
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просто отключить пересчёт формул и пресчитывать макросом только, а не в автоматисеком режиме не пойдёт???
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34607212
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
'Наприер столбец B
'Если в первой строке формула, то посчитать остальные так
Sub sad()
 Range("B1:B50").FillDown
 Range("B2:B50").Value = Range("B2:B50").Value
End Sub
'по столбцам цикл с тебя
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34607297
Evrodiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DeggasadА просто отключить пересчёт формул и пресчитывать макросом только, а не в автоматисеком режиме не пойдёт???
Да подошло бы, если можно было бы отключать расчет формул (переход на ручное расчитывание) в самом листе, а не целой книге :( На соседнем листе есть таблица, формулы которой постояно активны, если отключить , то и они же отключатся. Хотя может я неверен в своих домыслах.
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34607559
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evrodiller DeggasadА просто отключить пересчёт формул и пресчитывать макросом только, а не в автоматисеком режиме не пойдёт???
Да подошло бы, если можно было бы отключать расчет формул (переход на ручное расчитывание) в самом листе, а не целой книге :( На соседнем листе есть таблица, формулы которой постояно активны, если отключить , то и они же отключатся. Хотя может я неверен в своих домыслах.

Наверное правы
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34609538
Evrodiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые, есть ли еще варианты? Не пожалейте знаний и времени поделитесь :)
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34609568
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
{=СУММ(ЕСЛИ(иан=$F8;ЕСЛИ(МЕСЯЦ(дан)=МЕСЯЦ($B8);ЕСЛИ(ГОД(дан)=ГОД($B8);ван))))/ 435 }
иан,дан,ван - Что это? Именованные диапазоны?
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34609570
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvrodillerЛюди добрые, есть ли еще варианты? Не пожалейте знаний и времени поделитесь :)

Подожди минуточку, какие тебе ещё варианты?
Кто чего тебе жалеет. Я же написал. Исходя из того что в первой строке у тебя формулы, то
Код: plaintext
1.
2.
3.
Sub sad()
 Range("B1:B50").FillDown
 Range("B2:B50").Value = Range("B2:B50").Value
End Sub

Если это не то что нужно, то напиши что не устраивает, подробне опиши ситуацию, а ещё лучше выложи пример (как ты видишь) постановки и решения задачи!

а ты ЛЮДИ ДОБРЫЕ.
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34610232
Evrodiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor
Да это именнованые диапазоны
Deggasad
Сча попробую описать более детально, выложить пример не удастся, там вся книга задействована :(
Знач есть таблица в которой 23 столбца и 50 строк.
В столбце С написана формула
Код: plaintext
=ВПР($F6;'Список работников'!$B$ 4 :$D$ 36 ; 3 ;ЛОЖЬ)
В столбце D тоже самое, но только возвращаемое значение другое, в первом дату приема на работу возвращает из списка, который расположен на Листе2, во втором № группы к которой прикреплен работник. Самое главное начинается с столбца G там находится такая вот формула
Код: plaintext
{=СУММ(ЕСЛИ(иан=$F8;ЕСЛИ(МЕСЯЦ(дан)=МЕСЯЦ($B8);ЕСЛИ(ГОД(дан)=ГОД($B8);ван))))/ 435 }
во всех остальных столбцах, более или менее схожие формулы, суть не в этом, думаю потом можно будет дописать сколько угодно и какие угодно формулы, мне бы сам алгоритм и небольшой примерчик для решения :(
ИАН, ДАН, ВАН это именнованные диапазоны. Теперь хотелось бы написать макрос, который сможет при фтыке на кнопк "Расчет" просчитать по всем формулам этим , тоесть в С1 формулу просчитал, переходит на С2 , С3 ... С50, далее по другой форумле расчитывает также столбец G , может есть вариант просчета всего сразу, незнаю не встречал такого.
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34615115
Evrodiller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И тишина....
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34615176
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvrodillerИ тишина....

Хорошо давай и попробую описать более детально:

Если у тебя в ячейке C1 pаписана формула, которую можно растянуть вниз до C50 (например =(A1+B1)*2 ), но ты её не растягиваешь, а хочешь получить значения и пересчитывать макросом (например по нажатию кнопки), то ты делашь так.
Код: plaintext
1.
2.
3.
Sub sad()
 Range("C1:C50").FillDown
 Range("C2:C50").Value = Range("C2:C50").Value
End Sub

Если ты не хочешь хранить формулу в первой ячейке каждого столбца, а хочешь чтобы везде были значения. То храни её как текст, можно даже в макросе. Так например.
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub sad2()
Dim TextFormula As String
 TextFormula = "=(A1+B1)*2"
 Range("C1").Formula = TextFormula
 Range("C1:C50").FillDown
 Range("C1:C50").Value = Range("C1:C50").Value
End Sub

Оба приеры расчитаны на то что ты поставишь ячейку в первую строку, растянишь вниз и сохранишь значения. Я считаю этот вариант оптимальным так как всё равно тебе нужны значения в ячейках. Можно конечно поступить по другому и непосредственно в Макросе собирать текст формулы для кадой ячейки или даже вычисления проводить в макросе, но это будет медленнее и макрос будет гораздо больше (Если есть причины это делать - укажи их).
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34615188
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evrodillerмакрос, который сможет при фтыке на кнопк "Расчет" просчитать по всем формулам этим , тоесть в С1 формулу просчитал, переходит на С2 , С3 ... С50, далее по другой форумле расчитывает также столбец G , может есть вариант просчета всего сразу, незнаю не встречал такого.

Если в первой строке каждого столбца у вас стоят формулы, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub sad()
Dim icel As Range
' Необходимо указать диапазон первой строки в которой формулы
 For Each icel In Range("C1:F1")
  With icel
   .Resize( 50 ).FillDown
   .Offset( 1 ).Resize( 49 ).Value = .Offset( 1 ).Resize( 49 ).Value
  End With
 Next icel
End Sub
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34615201
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evrodillerмакрос, который сможет при фтыке на кнопк "Расчет" просчитать по всем формулам этим , тоесть в С1 формулу просчитал, переходит на С2 , С3 ... С50, далее по другой форумле расчитывает также столбец G , может есть вариант просчета всего сразу, незнаю не встречал такого.

Если формулы для первой строки хранить в макросе , то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub sad2()
Dim TextFormula( 3 ) As Variant, n As Long
Dim icel As Range

' Поочерёдно формулы для столбца
 TextFormula( 0 ) = "=(A1+B1)*2"
 TextFormula( 1 ) = "=(A1+B1)*3"
 TextFormula( 2 ) = "=(A1+B1)*4"
 TextFormula( 3 ) = "=(A1+B1)*5"
 
 n =  0 
 'Первая строка, кол-во столбцов должно быть столько же сколько формул в массиве
 For Each icel In Range("C1:F1")
  icel.Formula = TextFormula(n)
  With icel.Resize( 50 )
   .FillDown
   .Value = .Value
  End With
  n = n +  1 
 Next icel

End Sub 

Всё - желаю удачи
...
Рейтинг: 0 / 0
Расчет значений макросом по всей таблице
    #34615301
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvrodillerИАН, ДАН, ВАН это именнованные диапазоны. Теперь хотелось бы написать макрос, который сможет при фтыке на кнопк "Расчет" просчитать по всем формулам этим , тоесть в С1 формулу просчитал, переходит на С2 , С3 ... С50, далее по другой форумле расчитывает также столбец G , может есть вариант просчета всего сразу, незнаю не встречал такого.

Что представляет из себя диапазон ВАН, какой адрес и данные?

Наиболее быстрые методы - это следующие:

[J8:J55]=[formula]
[J8:J55]=Evaluate("formula")

но надо разобраться с формулами (возможно кое-что изменить)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Расчет значений макросом по всей таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]