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

Вход

Регистрация

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

 

= Мир MS Excel/Максимальное значение каждой строки в диапазоне. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Максимальное значение каждой строки в диапазоне. (Макросы/Sub)
Максимальное значение каждой строки в диапазоне.
oleg_lar4enko Дата: Среда, 21.01.2015, 22:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте.

Есть диапазон 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]Читайте Правила форума.
Кладите свой файл-пример
К сообщению приложен файл: 6529652.xlsx (11.2 Kb)


Сообщение отредактировал oleg_lar4enko - Среда, 21.01.2015, 23:25
 
Ответить
СообщениеЗдравствуйте.

Есть диапазон 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
Дата добавления - 21.01.2015 в 22:45
Gustav Дата: Среда, 21.01.2015, 23:56 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Макрос вполне рабочий, только 4-й строке надо придать следующий вид:
[vba]
Код
x = WorksheetFunction.max(x.Offset(0, -3).Resize(1, 3))
[/vba]

А на формулах задача решается еще проще - для ячейки F1:
Код
=МАКС(C1:E1)


Или вы именно в макросах практикуетесь?


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 21.01.2015, 23:58
 
Ответить
СообщениеМакрос вполне рабочий, только 4-й строке надо придать следующий вид:
[vba]
Код
x = WorksheetFunction.max(x.Offset(0, -3).Resize(1, 3))
[/vba]

А на формулах задача решается еще проще - для ячейки F1:
Код
=МАКС(C1:E1)


Или вы именно в макросах практикуетесь?

Автор - Gustav
Дата добавления - 21.01.2015 в 23:56
krosav4ig Дата: Четверг, 22.01.2015, 00:43 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
oleg_lar4enko, правила не читали, или не внимательно dont , оформляйте код тегами
еще вариант
[vba]
Код
Sub max()
     With [C1:E50]
         .Offset(, .Columns.Count).Resize(, 1).Formula = "=MAX(" & .Address & " " & .EntireRow(1).Address(0, 0) & ")"
     End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Четверг, 22.01.2015, 00:44
 
Ответить
Сообщениеoleg_lar4enko, правила не читали, или не внимательно dont , оформляйте код тегами
еще вариант
[vba]
Код
Sub max()
     With [C1:E50]
         .Offset(, .Columns.Count).Resize(, 1).Formula = "=MAX(" & .Address & " " & .EntireRow(1).Address(0, 0) & ")"
     End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 22.01.2015 в 00:43
oleg_lar4enko Дата: Четверг, 22.01.2015, 13:31 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Gustav, спасибо большое!!!) Да, практикуюсь в макросах)
 
Ответить
СообщениеGustav, спасибо большое!!!) Да, практикуюсь в макросах)

Автор - oleg_lar4enko
Дата добавления - 22.01.2015 в 13:31
oleg_lar4enko Дата: Четверг, 22.01.2015, 13:32 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
krosav4ig, хорошо) в следующий раз все будет сделано в соответствии с правилами форума). Спасибо.
 
Ответить
Сообщениеkrosav4ig, хорошо) в следующий раз все будет сделано в соответствии с правилами форума). Спасибо.

Автор - oleg_lar4enko
Дата добавления - 22.01.2015 в 13:32
oleg_lar4enko Дата: Среда, 28.01.2015, 00:06 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
А как доработать макрос, чтобы расчет происходил не только в диапазоне C1:E50, а с C1 , по последнюю заполненную строку??? Потому что данные будут постепенно добавляться.

Большое спасибо)
 
Ответить
СообщениеА как доработать макрос, чтобы расчет происходил не только в диапазоне C1:E50, а с C1 , по последнюю заполненную строку??? Потому что данные будут постепенно добавляться.

Большое спасибо)

Автор - oleg_lar4enko
Дата добавления - 28.01.2015 в 00:06
vikttur Дата: Среда, 28.01.2015, 01:24 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Определение последней заполненной ячейки столбца С:
[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]


Сообщение отредактировал vikttur - Среда, 28.01.2015, 01:38
 
Ответить
СообщениеОпределение последней заполненной ячейки столбца С:
[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]

Автор - vikttur
Дата добавления - 28.01.2015 в 01:24
oleg_lar4enko Дата: Среда, 28.01.2015, 23:12 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
vikttur, в реальном файле добавляются случайные числа, а можно чтобы макрос просто висел на кнопке и каждый раз при нажатии заново рассчитывал диапазон, в котором есть данные и в столбце F рассчитывал макс значение??
 
Ответить
Сообщениеvikttur, в реальном файле добавляются случайные числа, а можно чтобы макрос просто висел на кнопке и каждый раз при нажатии заново рассчитывал диапазон, в котором есть данные и в столбце F рассчитывал макс значение??

Автор - oleg_lar4enko
Дата добавления - 28.01.2015 в 23:12
krosav4ig Дата: Пятница, 30.01.2015, 00:02 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
можно в модуль листа такой код написать
[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
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 30.01.2015, 00:07
 
Ответить
Сообщениеможно в модуль листа такой код написать
[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
[/vba]

Автор - krosav4ig
Дата добавления - 30.01.2015 в 00:02
oleg_lar4enko Дата: Среда, 04.02.2015, 22:23 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Всем большое спасибо! Ваши знания очень помогли))
 
Ответить
СообщениеВсем большое спасибо! Ваши знания очень помогли))

Автор - oleg_lar4enko
Дата добавления - 04.02.2015 в 22:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Максимальное значение каждой строки в диапазоне. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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