|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.09.2009, 22:31 | #1 |
Форумчанин
Регистрация: 08.09.2009
Сообщений: 133
|
Выбор и перенос максимальных значений из столбца с учетом временного интервала.
Имеем два столбца - столбец А - время, и столбец B - значения. Cтолбцу А соответствуют значения в столбце B:
А............B 00:00 1,6551 00:05 1,6552 00:10 1,6553 00:15 1,6554 00:20 1,6555 00:25 1,6556 00:30 1,6557 00:00 1,6558 00:05 1,6559 00:10 1,6560 00:15 1,6564 00:20 1,6550 00:25 1,6580 00:30 1,6530 00:40 1,6535 00:00 1,6545 00:05 1,6561 00:10 1,6530 00:15 1,6522 00:20 1,6541 00:25 1,6600 00:30 1,6530 00:35 1,6500 Обратите внимание, что в первом столбце временной интервал от 00:00 до 00:20 повторяется ТРИ раза. Задача. Как ДЛЯ КАЖДОГО из трёх временных интервалов выбрать НАИБОЛЬШЕЕ значение из интервала 00:00-00:20 и вывести в отдельную строчку результат, который должен быть таким: 1,6555 - наибольшее значение в первом интервале 00:00-00:20 1,6564 - наибольшее значение во втором интервале 00:00-00:20 1,6561 - наибольшее значение в третьем интервале 00:00-00:20 Пробовал решить проблему через формулу: =МАКС(диапазон) - решается неплохо, НО что делать, когда миллион строчек?))))) Не каждый же раз вводить эту формулу и выбирать диапазон, замучаешься. Я так понял, что без макроса здесь не обойтись. Буду очень признателен, если кто-нибудь поможет. С Уважением, Владимир. Последний раз редактировалось Tidus; 08.09.2009 в 22:34. |
09.09.2009, 00:37 | #2 |
Новичок
Джуниор
Регистрация: 09.09.2009
Сообщений: 5
|
А значения временных интервалов всегда находится в указанных вами строчках, то есть в одном и том же месте таблицы? Если да, то я знаю как решить данную проблему по крайней мере в 2007 офисе.
|
09.09.2009, 01:06 | #3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Владимир, попробуйте следующий файл. Макрос запускается при нажатии на кнопку и ищет в нужных диапазонах максимумы и выводит их в 3 ячейки C1-C3.
|
09.09.2009, 01:53 | #4 |
Форумчанин
Регистрация: 08.09.2009
Сообщений: 133
|
Range("C1").Formula = "=MAX(B" & Cells(1, 9) & ":B" & Cells(1, 8) & ")"
'Range("C1").Calculate Range("C2").Formula = "=MAX(B" & Cells(2, 9) & ":B" & Cells(2, 8) & ")" Range("C3").Formula = "=MAX(B" & Cells(3, 9) & ":B" & Cells(3, 8) & ")" Range("H1:J3").Value = "" End Sub Спасибо за код. Но есть недостаток. Здесь видно, что вы для каждой строки расписываете в какую ячейку она будет выгружаться, благо - строк всего 3. А если таких строк миллион...Может лучше сделать, чтобы макрос рядом выгружал справа в столбец найденные данные по-порядку, чтобы в коде макроса не указывать каждую строчку по отдельности. Я конечно не программист, просто так подумал, если что поправьте...Если не затруднит, выложите пожалуйста второй вариант. Последний раз редактировалось Tidus; 09.09.2009 в 01:56. |
09.09.2009, 01:59 | #5 |
Форумчанин
Регистрация: 08.09.2009
Сообщений: 133
|
Значения временных интервалов находятся всегда в 1 столбце, НО не на равных равных расстояниях между друг другом. Например между 1 и вторым временным интервалом 2 строчки, а между вторым и третьим временным интервалом этих строчек уже 3, как показано в моем 1 посте. Если есть варианты, выкладывайте, интересно будет посмотреть, что получится.
|
09.09.2009, 02:06 | #6 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
То есть нужных к определению максимумов необяз. 3? Сколько должно быть найдено максимумов?
Мой код работает для любого кол-ва строк в интервалах, т.е. между 00:00 и 00:20 может быть разное кол-во строк. Последний раз редактировалось motorway; 09.09.2009 в 02:24. |
09.09.2009, 02:29 | #7 | |
Форумчанин
Регистрация: 08.09.2009
Сообщений: 133
|
Количество максимумов определяется количеством временных интервалов, в которых производится поиск, в вашем файле их 3 - это верно. У меня в 1 посте тоже выделено 3 временных интервала жирным цветом для упрощения задачи.
Цитата:
Я хотел сказать, что временных интервалов в столбце (от 00:00 до 00:20) может быть около тысячи (в вашем файле их всего ТРИ). Если временных интервалов около тысячи, то как тогда вы будете выгружать максимальные значения в ячейки? Вам придётся в макросе указывать С4....С1000. Последний раз редактировалось Tidus; 09.09.2009 в 02:33. |
|
09.09.2009, 02:30 | #8 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Вот, наверно, такой вариант будет как нужно. Сколько угодно интервалов, и максимумы вставляются в соотв. место справа.
|
09.09.2009, 02:38 | #9 |
Форумчанин
Регистрация: 08.09.2009
Сообщений: 133
|
Спасибо огромное, это именно то, что нужно!!!Буду теперь разбираться с кодом. Я наверное покажусь очень наглым, хотя может здесь читающим будет полезно, если вы выполните небольшую мою просьбу. Не могли бы расписать перед каждой строчкой кода прямо в этой теме, что каждая строчка выполняет и какое действие делает, что бы в будущем уже можно было самому совершенствовать этот код.
|
09.09.2009, 02:51 | #10 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Надеюсь, будет понятно. Возможно, код можно оптимизировать - писал быстро.
Код:
Потом мы формируем эти формулы, используя найденные переменные - начало интервала и конец. Последний раз редактировалось motorway; 09.09.2009 в 03:01. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
5 максимальных значений в сводной таблице в новом Excel | Катик7 | Microsoft Office Excel | 2 | 03.09.2009 17:26 |
Случайный выбор значений из списка | Stoodentka | Microsoft Office Excel | 4 | 14.07.2009 07:56 |
Выбор значений по отдельной группе | michi | SQL, базы данных | 2 | 15.10.2008 22:35 |
Запись файлов в *.тхт с учетом повторяющихся значений | Arteom | Общие вопросы Delphi | 3 | 03.04.2008 17:26 |
выбор значений в цикле | Melok | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 15.12.2007 22:56 |