Есть диапазон C1:E50 со случайными числами. Есть диапазон F1:F50. помогите, пожалуйста с макросом, который бы вычислял максимальное значение в каждой строке диапазона C1:E50 и результат выводил в диапазон F1:F50.
есть такой макрос, но не знаю как его доделать:
[vba]
Код
Sub max() Dim x As Range For Each x In [F1:F50] x = WorksheetFunction.max(x(3).Resize(5)) Next End Sub
[/vba]
Заранее большое спасибо)
[moder]Читайте Правила форума. Кладите свой файл-пример
Здравствуйте.
Есть диапазон C1:E50 со случайными числами. Есть диапазон F1:F50. помогите, пожалуйста с макросом, который бы вычислял максимальное значение в каждой строке диапазона C1:E50 и результат выводил в диапазон F1:F50.
есть такой макрос, но не знаю как его доделать:
[vba]
Код
Sub max() Dim x As Range For Each x In [F1:F50] x = WorksheetFunction.max(x(3).Resize(5)) Next End Sub
[/vba]
Заранее большое спасибо)
[moder]Читайте Правила форума. Кладите свой файл-примерoleg_lar4enko
А как доработать макрос, чтобы расчет происходил не только в диапазоне C1:E50, а с C1 , по последнюю заполненную строку??? Потому что данные будут постепенно добавляться.
Большое спасибо)
А как доработать макрос, чтобы расчет происходил не только в диапазоне C1:E50, а с C1 , по последнюю заполненную строку??? Потому что данные будут постепенно добавляться.
Определение последней заполненной ячейки столбца С: [vba]
Код
Dim lRws As Long
With Лист1 lRws = .Cells(.Rows.Count, 3).End(xlUp).Row End With
[/vba] В реальном файле в диапазоне C1:E50 действительно случайные числа? Если нет, можно определять значение без формулы. Макрос может реагировать на событие листа: вставка максимального при изменении значений ячеек в строке. Код в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Cells.Count > 1 Then Exit Sub ' выход, если выделено более 1 ячейки If Not Application.Intersect(Range("C:E"), Target) Is Nothing Then ' если изменение в диапазоне C:E With Target ' в столбец F вписать максимальное значение диапазона строки Cells(Target.Row, 6).Value = _ WorksheetFunction.Max(Cells(.Row, 3).Resize(1, 3)) End With End If End Sub
[/vba]
Определение последней заполненной ячейки столбца С: [vba]
Код
Dim lRws As Long
With Лист1 lRws = .Cells(.Rows.Count, 3).End(xlUp).Row End With
[/vba] В реальном файле в диапазоне C1:E50 действительно случайные числа? Если нет, можно определять значение без формулы. Макрос может реагировать на событие листа: вставка максимального при изменении значений ячеек в строке. Код в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Cells.Count > 1 Then Exit Sub ' выход, если выделено более 1 ячейки If Not Application.Intersect(Range("C:E"), Target) Is Nothing Then ' если изменение в диапазоне C:E With Target ' в столбец F вписать максимальное значение диапазона строки Cells(Target.Row, 6).Value = _ WorksheetFunction.Max(Cells(.Row, 3).Resize(1, 3)) End With End If End Sub
vikttur, в реальном файле добавляются случайные числа, а можно чтобы макрос просто висел на кнопке и каждый раз при нажатии заново рассчитывал диапазон, в котором есть данные и в столбце F рассчитывал макс значение??
vikttur, в реальном файле добавляются случайные числа, а можно чтобы макрос просто висел на кнопке и каждый раз при нажатии заново рассчитывал диапазон, в котором есть данные и в столбце F рассчитывал макс значение??oleg_lar4enko
Private Sub Worksheet_Calculate() Dim rrow As Range With Application: .ScreenUpdating = 0: .EnableEvents = 0:: .Calculation = xlCalculationManual For Each rrow In Intersect(ActiveSheet.UsedRange, [C:E]).Rows rrow.Offset(, 3).Resize(, 1).Formula = "=MAX(" & rrow.Address & ")" Next .Calculation = xlCalculationAutomatic: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
можно в модуль листа такой код написать [vba]
Код
Private Sub Worksheet_Calculate() Dim rrow As Range With Application: .ScreenUpdating = 0: .EnableEvents = 0:: .Calculation = xlCalculationManual For Each rrow In Intersect(ActiveSheet.UsedRange, [C:E]).Rows rrow.Offset(, 3).Resize(, 1).Formula = "=MAX(" & rrow.Address & ")" Next .Calculation = xlCalculationAutomatic: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub