![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.07.2014
Сообщений: 13
|
![]()
Добрый день. Никогда раньше VBA не пользовался применимо к Excell и вообще.
Задача простая, но пока путаюсь в классах, методах VBA. А набросать работоспособный макрос надо уже вчера. Суть: есть несколько столбцов данных. Допустим в первом столбце данные идут сначала вида буквачисло (например Z56), после идут чисто числовые значения, далее опять буквачисло. Надо выделить и скопировать данные с Z до числовых значений и данные с Z после числовых значений на другой лист. Размеры массивов каждый разз разные, разумеется. Типа Z56 Z73 Z43 67 86 78 Z33 Z22 Должны на соседнем листе стать Z56 Z33 Z73 Z22 Z43 Всем откликнувшимся заранее спасибо. Или подскажите как этот цикл проверки и выделения не соединять в единый массив, а перенести отдельно. А то у меня получается только все значения до числовых полей и после переносить одним массивом. |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
отмечаете колонку (диапазон) с Вашими данными, выполняете этот
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.07.2014
Сообщений: 13
|
![]()
Отлично!
Работает!!! Спасибо! Я так понял, тут сводится все к проверке формата ячейки, текстовые туда, числа нафиг (что собственно я и спрашивал, конечно). А как сюда вклинить именно срабатывание на Z? Дело в том, что там несколько столбцов в range будет, там могут и другие маркеры теоритически появляться - хотелось бы отслеживать только маркер Z в неком ключевом столбце и чтобы весь диапазон копировался на соседний лист по наличию Z допустим в первом. И опять же, проверку сюда можно вклинить, чтобы ситуация массив с Z массив числовой массив с Z была правильной, а на другие ситуации скрипт ругался? Т.е. Массив с Z массив числовой или к примеру массив с Z массив числовой массив с Z массив числовой уже считались исключением и автоматом такое разбрасывать не стоит? В любом случае, большое спасибо за помощь, теперь видно в какую сторону копать можно и за счет чего. Хотя понимаю, что эту задачу можно решить еще кучей способов. Благодарность от меня в любом случае последует, как до яндекса доберусь. Если это не представляет сложности, покажите как эту ситуацию можно развить, в плане Z и проверки. В любом случае мой скрипт-франкенштейн уже работает с Вашей вставкой. Последний раз редактировалось swordpig; 23.07.2014 в 20:36. |
![]() |
![]() |
![]() |
#4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
для начала, практически все (кроме for ... next) сделано на объектах ексель, их свойствах и методах с целью приоткрыть Вам занавес, так сказать
вторая цель - выпендриться и показать, как Ваша задача решается 4-5 строками VBA третья цель - неявно присутствует в подписи а теперь давайте с подробностями: какие могут быть данные, как они могут располагаться что и каком порядке из них надо выбрать как должны быть представлены результаты обработки данных насколько понял из ранее сказанного - сами пишите немного и понимаете что точно сформулированная задача - это уже половина решения, а частично описанная задача - это повод для поиска и разработки все новых и новых решений по мере выявления очередных особенностей в исходных данных.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 23.07.2014
Сообщений: 13
|
![]()
Да, я понимаю, что задача изначально была одна, которую Вы решили 5 строками кода. Но это как всегда - когда что-то есть, хочется большего.
В принципе, применив Ваш скрипт задача решена. Но хотелось бы гибкости. И да, согласен, когда знаешь проблему как она есть - не тратишь время на бесконечные переделки под новые условия. Задача довольно проста - есть массив чисел (файл данных с датчиков) в 17 столбцов с A по Q (A - дата). в 10 столбце (K) - значения, по которым идет проверка, если там впереди литера Z, значит это время пробитие "нулей", потому эти значения с столбца i по столбец q должны быть скопированны на другой лист уже без литеры впереди, для последующей интерполяции. Далее в файле идут данные без литеры Z. Они остаются как есть на первом листе. И в конце файла опять массив данных с столбца i по столбец q с литерой Z в столбце К - это нули датчиков в конце измерения, соответственно они должны быть так же скопированны на соседний лист отдельным массивом рядом с массивом данных с начала файла. Это типовая ситуация, когда в файле идут данные с литерой Z, данные, данные с литерой Z. Остальные файлы - исключение и не должны рассматриваться. И как бы всю задачу я решил, криво конечно, в основном с помощью записи макроса да различными вставками. Пока решал, конечно работал с одним файлом, явственно прописывая адреса ячеек. Но теперь надо отвязаться от явного указания адресов. Все остальное меня устраивает, проблему отвязки решил именно соседним листом. Но вот перенос значений на соседний лист - это единственное, что пока ставит в тупик. С Вашим решением это возможно, но придется вокруг нагородить еще всякого. Для большей понятности, если необходимо, выкладываю файл с макросом+файл данных. Сильно не смейтесь, работает и то хорошо =) https://yadi.sk/d/99idRAtQXEHNL |
![]() |
![]() |
![]() |
#6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
странно, но IE не может доступиться к файлу по ссылке.
тут есть возможность прикрепить к сообщению заархивированный файл.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 23.07.2014
Сообщений: 13
|
![]()
Да, конечно.
Во вложении. |
![]() |
![]() |
![]() |
#8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
см. вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 23.07.2014
Сообщений: 13
|
![]()
Спасибо!!! Уже стольких своих франкенштейнов понапридумывал, но результата все небыло.
Запустил - ругается на линии 69 Sheets.Add after:=ActiveSheet.Index Вроде этот метод посмотрел в тырнете - все верно написан. Разницы нету в реализациях на разных версиях Excel? Я на 2003 пробую. |
![]() |
![]() |
![]() |
#10 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
извините, так надо:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выделение диапазона ячеек с нефиксироваными границами | Je11 | Microsoft Office Excel | 4 | 07.03.2013 18:36 |
Как сцепить данные с определенного диапазона ячеек через запятую | Alex___ | Microsoft Office Excel | 5 | 21.01.2013 23:42 |
Создание формулы с вычислением среднего значения диапазона ячеек | Buchhalter | Microsoft Office Excel | 16 | 02.04.2012 21:09 |
Выделение диапазона по условию тестовых значений ячеек | as-is | Microsoft Office Excel | 1 | 08.03.2010 14:45 |
Складывание ячеек при достижение определенного значения | Vladimir17M | Microsoft Office Excel | 6 | 08.02.2010 05:39 |