Я уже почти сделал, чтобы данный шаблон автоматически делал заготовку на нужное количество точек. Далее остаётся только ввести название, координаты и радиусы, и всё на печать. Не знаю, должно заработать.
Ув. kub13, Выас не затруднит дать простой совет - чтобы фунции на VBA можно было вызывать в ячейках, как встроенные функции EXCELя, какие действия делаем? Я захожу в Редактор Вижл Бэйсик, создаю новый модуль -и все тогда работает (ОГРОМНОЕ ВАМ СПАСИБО!) А есть другие варианты и общие правила? Если сохранен макрос последовательности действий (когда записываются действия пользователя), то что с ним можно сделать дальше? Заранее спасибо.
Посмотрите, например мой последний файл, например Ведомость углов поворота. Если нажать на кнопку (или выбрать в меню) вставить функцию, то в появившемся окне можно выжрать категорию "определенные пользователем", там появятся все функции, которые уже созданы в текущей (или персональной) книге. Выбираем, например функцию "L", её код в VBA относительно простой и понятный: 'Вычисление расстояния между двух точкек Function L(x1, y1, x2, y2) As Double L = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) End Function Формула в ячейке будет выглядеть приблизительно так: =L(E12;F12;E14;F14) (тычем мышью в 4 ячейки с координатами, удерживая Ctrl). Для вычисления азимута =DUr(E12;F12;E14;F14). 'Вычисление дирекционного угла по коорд. 2х точек в Радианах Function DUr(x1, y1, x2, y2) As Double dx = x2 - x1 dy = y2 - y1 + 0.00000000000001 DUr = Pi * Sgn(dy) / 2 - Atn((dx / dy)) ' Sgn (знак числа) If DUr >= 0 Then DUr = DUr Else: DUr = Pi * Sgn(dy) / 2 - Atn((dx / dy)) + 2 * 3.14159265358979 End If End Function Тоже самое, но в ГГГ.ММСС использую функцию DU(x1, y1, x2, y2) As Double Если мне надо сделать, что-то новое, то я сначала записываю новый макрос (Начать макрос...) делаю приблизительную последовательность задуманных действий. Потом захожу в "Редактор VB", подглядываю и редактирую. И так многократно по вышеописанному кругу. Я не большой специалист в VBA, только в рамках того, что надо было решить. Для меня это решение головоломок (иногда с удовольствием или приятное с полезным). Так что описывайте свою задуманную задачу и попробуем решить совместно.
kub13, я открываю EXCEL редко, когда другое ПО не предоставляет мне нужных функций. Задач море. в данный момент задумался над такой: Поменять свойства ячейки (цвета, шрифт, рамки) с помощью функции, проверяющей условия. К примеру, нужно сравнить координаты пар точек. 1. в столбцы A,B,C,D вставлен список координат точек (X1, Y1, X2, Y2) 2. в столбце E рассчитывается расстояние для каждой пары точек ( SQR((X2-X1)^2+(Y2-Y1)^2) о определяется в какой диапазон попадает это расстояние (минимальное, в допуске, плохое, громадное) и результат пишется разным цветом 3. Диапазон допусков задан в первой строке в ячейках A1, A2, A3,.. AN Это актуально при сравнении вариантов координат разных точек (Измерения в разное время, разными методами, разные исходные пункты, разные источники), когда их не одна сотня, а то и тысячи. Я по-быстрому в отдельной ячейке делал формулу, которая ставит звездочки (*********). Можно так же и менять цвета ячеек. Но, хотелось бы изящное решение- одну-единственную функцию на VBA, которая посчитает обратку, оценит результат и поменяет цвет заливки ячейки, в которую ее поместили. И все! Задача несложная, но мне нужно долго и нудно экспериментировать, читать справку. Может быть, у кого получится быстрее?
Lex K-G, Я бы скорее всего использовал "Условное форматирование + автофильтр" (см. файл). VBA имеет смысл заниматься, когда четко определены параметры функции, их количество и способ сравнения, а в основном универсальность (типичность) применения. Будет время, попробую. Если есть готовые таблицы (разные варианты) скиньте.
Pedro, Вроде бы добил "Ведомость углов поворота. прямых и кривых плана трассы". В левом верхнем углу есть кнопка "Подготовить", нажав на неё делается копия листа, затем в появившемся окне вводите количества точек (координат) для новой ведомости. Заготовка готова. Осталось в светло-жёлтые ячейки ввести (или скопировать значения) координаты и радиусы, исправит название объекта и на печать (проверьте параметры страницы). Ячейки с Красным шрифтом - это с формулами, для автоматического вычисления. Тоже самое на скрытом листе "Итоги" (до первого нажатия кнопки он отображен) откуда каждый раз копируется итоговая заготовка. При необходимости смените шрифт на чёрный. Проверьте почему-то разность углов на примере повторяется 2 раза. Сделал два шаблона, одинаковых по содержанию, но незначительно отличающихся по оформлению. Да ещё, лишние строки вверху удалять нельзя. Если используете Exsel 2007 или 2010, то предварительно сохраните как... книгу с макросами, закройте и откройте заново. Иначе при добавлении листа будет выходить сообщение об ошибке. Вопросы, отзывы, пожелания пишите.
Помогите с макросом! Хотя для этой задачи может он и не нужен вовсе... В общем необходимо удалить повторяющиеся значения в указанном столбце (формат не важен, т.е. общий). Фильтр не подходит.
Идея такая: Добавление первого столбца, для восстановления первоначального порядка. Нумерация строк. Если строки изначально пронумерованы, то этот пункт пропускается. Сортировка по столбцу, в котором надо убрать повторы. Добавление 2 столбца за этим столбцом. В первом из добавленных столбцов формула разницы каждого элемента с нижележащим. Копирование этого столбца и вставка во второй добавленный в виде "Вставить значения". Сортировка по второму добавленному столбцу. Удаление строк с результатом равным нулю или меньше определённой величины во втором добавленном столбце. Сортировка по столбцу А.
В.Шуфотинский, спасибо за отклик! Я так и делаю, но это ж гораздо дольше нежели 1. выбрал столбец, 2. обратился к макросу - повторяющиеся значения в столбце удалились, 3. сортировка по столбцу, 4. удаление строк без первой ячейки.
Макрос скорее всего действительно не нужен. Я делаю так: -на всякий случай копирую лист, -добавляю столбец с нумерацией (чтобы восстановить порядок), -сортирую нужный столбец, -в новый после столбец ввожу формулу типа =ЕСЛИ(E6<>"";ЕСЛИ(E6=E5;"Повтор";"");"") -и размножаю до конца, -далее делаю автофильтр -выбираю в автофильтре "Повтор" -теперь можно выделить диапазон повторений и удалить и т.п. -при необходимости отсортировать по столбцу с нумерацией и удалить его См. пример в файле. Скидывайте файл может помогу на конкретном примере.
Пока писал и готовил файл не заметил ответов. У меня методика аналогичная предложенной В.Шуфотинским. Если таблицы, которые надо модернизировать всегда схожие, то макрос сделать будет значительно проще, чем универсальный.
Так я эту последовательность когда-то это в макрос записал. Давно это было. Сейчас этим не занимаюсь.
вот и я тоже не занимаюсь.. думал у кого есть готовое решение.. по формулам Excel - эту задачу решить, конечно, можно, но не хочется так заморачиваться) В конечном счете данные все-равно пойдут в формат csv или txt. я, если честно, не могу понять какой макрос универсальный, а какой нет в данном случае?
Alexandr-GR, Я делал схожий макрос, который находит комментарии в файле скачки сырых данных с тахеометра переносит их в новый столбец справа и на ячейку ниже, а пустую строку удаляет. Там конечно, для каждого тахеометра, немного свой подход и макрос. Давайте файл.
четыре столбика с кодами(описаниями) - в конечном варианте мне необходим 1 с уникальными описаниями. Другой пример - необходимо удалить повторяющееся значения в первом(А) столбце
Требуется уточнение: Не совсем понял, уникальность строки (комбинацию из 4 ячеек), а лишние идентичные строки удалить? Или поиск одинаковых данных только по первому столбцу, и удалять ячейки или строки все что ниже? Первоначальная очерёдность важна?, Или сортировка по столбам (кодам)? Как я догадываюсь здесь (в первом файле) идеально подойдет "Сводная таблица". Например 1003 повторяется 2 раза, первую строку оставляем с POS, а вторую (другие) с STN удаляем? Если да, то тогда поиск и удаление строк с кодом STN во втором столбце не подходит?
В первом примере, да и в принципе необходимо удалить повторяющиеся значения оставив пустые ячейки. В конечном счете я это буду сводить в единый список(столбец), но это я могу сделать вручную. Никакой зависимости со строками, т.е. выделил диапазон повторяющиеся значения удалились. По такому же принципу во втором файле - выделяем первый столбец в качестве диапазона, а то что в других столбцах(строках) нас не интересует. В примере так совпало POS и STN, в основном все данные идентичны.
Alexandr-GR, Оцените так надо было или не так, так я понял и сделал? Для начала нажмите на большую кнопку с красным шрифтом.
При операциях с диапазонами, особенно большими, эффективен следующий подход: переносим диапазон в массив обрабатываем массив возвращаем массив в диапазон (если нужно). Иллюстрация такого подхода для примера 17022013.xls, поле А в прилагаемом файле (предполагается что диапазон определен и отсортирован).
kub13, для второго варианта (там где был каталог координат) идеально.. Если б можно было удалять таким образом в выделенном диапазоне или с выбором столбца вообще было супер.. В любом случае, уже этот вариант значительно облегчает для меня процесс. Спасибо, что не оставили без внимания! Уже завтра пригодится..