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

Вход

Регистрация

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

 

= Мир MS Excel/Как найти максимальное значение из массива по подобию ВПР? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как найти максимальное значение из массива по подобию ВПР? (Макросы/Sub)
Как найти максимальное значение из массива по подобию ВПР?
alex_07 Дата: Понедельник, 09.04.2018, 15:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день уважаемые форумчане!
Прошу помочь в решении не простой задачи.
Есть файл в котором большое количество данных. Эти данные мы получаем с бурильной установки.
Машина в столбец В записывает глубину, в столбец J количество поданного раствора в литрах (назовем просто расход).
В соответствии с глубиной она так же ведет подсчет данных расхода в промежутке 1 метра. Т.е. с каждого метра подсчет ведется заново или добавляется если данный метр уже был задействован.
Собственно вопрос: как найти максимальное значение в столбце J, когда в столбце В значение в пределах от 0 - 1, далее 1 - 2, 2 - 3 и тд...
К сообщению приложен файл: 12.xls (44.0 Kb)
 
Ответить
СообщениеДобрый день уважаемые форумчане!
Прошу помочь в решении не простой задачи.
Есть файл в котором большое количество данных. Эти данные мы получаем с бурильной установки.
Машина в столбец В записывает глубину, в столбец J количество поданного раствора в литрах (назовем просто расход).
В соответствии с глубиной она так же ведет подсчет данных расхода в промежутке 1 метра. Т.е. с каждого метра подсчет ведется заново или добавляется если данный метр уже был задействован.
Собственно вопрос: как найти максимальное значение в столбце J, когда в столбце В значение в пределах от 0 - 1, далее 1 - 2, 2 - 3 и тд...

Автор - alex_07
Дата добавления - 09.04.2018 в 15:39
sboy Дата: Понедельник, 09.04.2018, 15:45 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Самый простой вариант сводной таблицей с группировкой
К сообщению приложен файл: 12-3-.xls (57.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Самый простой вариант сводной таблицей с группировкой

Автор - sboy
Дата добавления - 09.04.2018 в 15:45
alex_07 Дата: Четверг, 12.04.2018, 06:58 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Самый простой вариант сводной таблицей

Такой вариант не очень хорош.
Глубина меняется от 6 до 15 метров, от этого сводная таблица постоянно меняется в размерах.
Данные из сводной таблицы в последствии автоматически копируются на другие листы для дальнейшего анализа.
Однако из за изменении размеров таблицы данные частично отсутствуют, от чего выскакивают ошибки.
Плюс Excel начинает ужасно тормозить.

Нашел такой код, но как его поменять к необходимым требованиям - не понимаю.
К сожалению код без комментариев. И данные суммируются, а не выбираются максимальные значения.
Построчно проверить код не получается, выдает ошибку "Expected:to", при этом макрос работает.

[vba]
Код

Sub Go()
Dim CurrentArr(3) As Variant
Set CurrentDic = CreateObject("Scripting.Dictionary")
With ActiveWorkbook.Sheets("ЛИСТ1")
Count = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Count
CurrentCode = .Cells(i, 9).Value
If CurrentDic.exists(CurrentCode) Then
CurrentArr2 = CurrentDic.Item(CurrentCode)
CurrentArr2(1) = CurrentArr2(1) + .Cells(i, 3).Value
CurrentArr2(3) = .Cells(i, 4).Value
CurrentDic.Item(CurrentCode) = CurrentArr2
Else
CurrentArr(0) = .Cells(i, 7).Value
CurrentArr(1) = .Cells(i, 8).Value
CurrentArr(2) = .Cells(i, 11).Value
CurrentArr(3) = .Cells(i, 12).Value
CurrentDic.Add CurrentCode, CurrentArr
End If
Next i
Arr = CurrentDic.Keys
For i = 3 To CurrentDic.Count - 1
CurrentKey = Arr(i)
PromArr = CurrentDic.Item(CurrentKey)
.Cells(i + 1, 20).Value = CurrentKey
.Cells(i + 1, 21).Value = PromArr(0)
.Cells(i + 1, 22).Value = PromArr(1)
.Cells(i + 1, 23).Value = PromArr(2)
.Cells(i + 1, 24).Value = PromArr(3)
Next i
End With
End Sub
[/vba]


Сообщение отредактировал alex_07 - Четверг, 12.04.2018, 07:08
 
Ответить
Сообщение
Самый простой вариант сводной таблицей

Такой вариант не очень хорош.
Глубина меняется от 6 до 15 метров, от этого сводная таблица постоянно меняется в размерах.
Данные из сводной таблицы в последствии автоматически копируются на другие листы для дальнейшего анализа.
Однако из за изменении размеров таблицы данные частично отсутствуют, от чего выскакивают ошибки.
Плюс Excel начинает ужасно тормозить.

Нашел такой код, но как его поменять к необходимым требованиям - не понимаю.
К сожалению код без комментариев. И данные суммируются, а не выбираются максимальные значения.
Построчно проверить код не получается, выдает ошибку "Expected:to", при этом макрос работает.

[vba]
Код

Sub Go()
Dim CurrentArr(3) As Variant
Set CurrentDic = CreateObject("Scripting.Dictionary")
With ActiveWorkbook.Sheets("ЛИСТ1")
Count = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Count
CurrentCode = .Cells(i, 9).Value
If CurrentDic.exists(CurrentCode) Then
CurrentArr2 = CurrentDic.Item(CurrentCode)
CurrentArr2(1) = CurrentArr2(1) + .Cells(i, 3).Value
CurrentArr2(3) = .Cells(i, 4).Value
CurrentDic.Item(CurrentCode) = CurrentArr2
Else
CurrentArr(0) = .Cells(i, 7).Value
CurrentArr(1) = .Cells(i, 8).Value
CurrentArr(2) = .Cells(i, 11).Value
CurrentArr(3) = .Cells(i, 12).Value
CurrentDic.Add CurrentCode, CurrentArr
End If
Next i
Arr = CurrentDic.Keys
For i = 3 To CurrentDic.Count - 1
CurrentKey = Arr(i)
PromArr = CurrentDic.Item(CurrentKey)
.Cells(i + 1, 20).Value = CurrentKey
.Cells(i + 1, 21).Value = PromArr(0)
.Cells(i + 1, 22).Value = PromArr(1)
.Cells(i + 1, 23).Value = PromArr(2)
.Cells(i + 1, 24).Value = PromArr(3)
Next i
End With
End Sub
[/vba]

Автор - alex_07
Дата добавления - 12.04.2018 в 06:58
SLAVICK Дата: Четверг, 12.04.2018, 09:19 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
сводная таблица постоянно меняется в размерах

так нужно чтобы размеры были одинаковые?
можно просто таблицу сделать с формулой:
Код
=МАКС(($B$3:$B$999<=[@Param])*($B$3:$B$999>Q3)*($J$3:$J$999))
К сообщению приложен файл: 12-3-2-.xls (50.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
сводная таблица постоянно меняется в размерах

так нужно чтобы размеры были одинаковые?
можно просто таблицу сделать с формулой:
Код
=МАКС(($B$3:$B$999<=[@Param])*($B$3:$B$999>Q3)*($J$3:$J$999))

Автор - SLAVICK
Дата добавления - 12.04.2018 в 09:19
alex_07 Дата: Четверг, 12.04.2018, 11:51 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
можно просто таблицу сделать с формулой


Не понимаю. Использую выше указанную формулу, но в любом случае получаю ошибку #ЗНАЧ.
Видимо это не просто формула с методом "скопируй и вставь"?


Сообщение отредактировал alex_07 - Четверг, 12.04.2018, 11:52
 
Ответить
Сообщение
можно просто таблицу сделать с формулой


Не понимаю. Использую выше указанную формулу, но в любом случае получаю ошибку #ЗНАЧ.
Видимо это не просто формула с методом "скопируй и вставь"?

Автор - alex_07
Дата добавления - 12.04.2018 в 11:51
китин Дата: Четверг, 12.04.2018, 11:56 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Видимо это не просто формула

да, это формула массива. водится нажатием 3 клавиш Ctrl,Shift,Enter


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Видимо это не просто формула

да, это формула массива. водится нажатием 3 клавиш Ctrl,Shift,Enter

Автор - китин
Дата добавления - 12.04.2018 в 11:56
alex_07 Дата: Четверг, 12.04.2018, 13:46 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Помогло, спасибо!
 
Ответить
СообщениеПомогло, спасибо!

Автор - alex_07
Дата добавления - 12.04.2018 в 13:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как найти максимальное значение из массива по подобию ВПР? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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