|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Добрый день. Я в VBA новичок, на работе больше приходится строить выборки на SQL, отчеты в PHP. Встала задача сделать Макрос, который обрабатывает большую таблицу данных, например: 123456 | 01.01.2018 | вата | синяя | .......... 123456 | 01.11.2018 | пакля | красная | .......... 123456 | 01.07.2016 | вата | зеленая | .......... 654321 | 01.05.2017 | веревка | синяя | .......... 654321 | 01.06.2017 | пакля | синяя | .......... 654321 | 01.07.2017 | вата | зеленая | .......... 333333 | 01.02.2018 | пакля | красная | .......... 333333 | 01.03.2018 | веревка | синяя | .......... 333333 | 01.04.2018 | вата | зеленая | .......... Мне необходимо выбрать для диапазонов данные вложенно. Допустим для всех 123456 найти максимальную Дату, потом для одинаковых значений выбрать только синий ну и так далее.... В принципе алгоритм всегда будет одинаковым, мне хочется понять как сделать самое начало - то есть как получить ДЛЯ КАЖДОГО дипапазона строчку с максимальной датой - допустим скопировать эти строки на новый лист (уже научился создавать листы =) ) Поиском находил варинаты с импортом екселя в БД и последующими запросами получать нужные выборки. Возможно так будет проще ? Но с Акцесом я как то тоже не дружу, имеется SQL сервер. Вопрос в том, что это надо делать пользователям, а я сейчас загоняю данные в SQL через SQL IMPORT MASTER, пользователи с таким не справятся и у них нет полномочий. Потому хотелось бы Макросом реализиовать такое. И еще вопрос - когда я хотел сделать что-то на PHP, первые запросы поиска выводили меня на сайт с примерами, где мне ну вот совсем все понятно. Пример - https://www.php.net/manual/ru/function.isset.php Есть ли подобные справочники для VBA?? Я не смог найти чего то вменяемого в интернете или похожего. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 13:14 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
К диапазону на листе Excel можно обращаться так же, как к таблице БД. Выполнять запросы, получать результаты... В крайнем случае - есть функции листа, в т.ч. и сортировка диапазона. Но делать всё это вручную? фэ-э-э. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 14:32 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Akina, Это всё чудесног, но есть пример работы по моему вопросу ? Допустим в С++ я мог получить адрес переменной, и потом в цикле сравнивать значение по адресу со следующим элементом. Тут же вообще какой то Ад ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 14:42 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
j-esterAkina, Допустим в С++ я мог получить адрес переменной, и потом в цикле сравнивать значение по адресу со следующим элементом. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Вот кусок моего кода , который в цикле в зависимости от значения ячейки выполняет операцию...... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 15:47 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Serg197311, Какая жесть.... Но спасибо, буду разбираться... Тут есть что позаимствовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 08:46 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
j-esterЕсть ли подобные справочники для VBA?? А как же? Справочник по VBA для Office . Справочник по Microsoft DAO . j-esterесть пример работы по моему вопросу ? Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 09:05 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Akina, Спасибо большое!! Буду разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2019, 13:07 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Снова требуется помощь! Подскажите - разобрался чуть чуть с обходом: Выделяю диапазон для поиска границ: Код: vbnet 1.
Просто считаю: Код: vbnet 1.
Рабочий код далее: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Подскажите: 1) Как работает указатель в данном языке при обходе выделенных ячеек - если я в цикле с начала получаю Начало и конец диапазона и пытаюсь выделить его - он сбросит указатель активной ячейки в общем цикле ? 2) Может лучше и правильнее сформировать .... двумерный массив с диапазонами и потом брать от туда координаты, выделять и в выделенном искать максимальную дату в соседнем столбце ? Оно вообще так умеет ? Пока у меня верно раскрашиваются диапазоны (В ОДНОМ СТОЛБЦЕ - я выделил столбец) , то есть границы я получаю верно . Все это применительно для таблицы: 123 08.04.2014 Вася 123 09.09.2017 Коля 123 20.04.2015 Миша 123 11.11.2016 Женя 123 12.12.2017 Петро 123 13.04.2017 456 01.01.2009 Катя 456 05.03.2009 Маша 456 05.03.2011 Таня 888 06.07.2010 Женя 888 10.10.2011 Оля 888 12.12.2007 Алена 999 11.11.2011 Света 999 10.11.2011 Алена 999 08.11.2011 Маша 999 09.11.2011 Катя ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 10:58 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
j-ester Код: vbnet 1. 2.
Сделайте как в последующей строке Код: vbnet 1.
и ошибки не будет. А лучше приложите файл с двумя листами: что есть и что надо получить. В т.ч. с поиском максимума и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 18:20 |
|
Выборка из последовательных диапазонов
|
|||
---|---|---|---|
#18+
Казанский, На листе надо - сгруппированные столбцы , с отбором ПО МАКСИМАЛЬНОЙ ДАТЕ. При условии что столбец с числами заполнен. Для некоторых, например двух показателей надо выносить на отдельные листы. Ми мысли: 1)обойти и получить границы диапазонов для каждого кода - сделал. 2) В каждом диапазоне пройтись и найти максимальную дату (при условии что поле с числом не пустое) и скопировать на новый лист Вот тут уже сложновато мне. 3) Насоздавать листы для определенных показателей из массива 4) сделать выборку и скопировать в свои листы нужные данные ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2019, 09:47 |
|
|
start [/forum/topic.php?fid=60&fpage=7&tid=2154924]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 139ms |
0 / 0 |