Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
Задача в следующем! Есть 2 списка. В первом только одна колонка с названиями транзисторов. В другой несколько колонок - названия, маркировка и так далее. Во втором списке названий много больше. Нужно как то автоматизировать процесс дополнения колонок первого списка: то есть берем первый транзюк из первого списка, ищем его во втором и копируем все дополнительные колонки для него из второго списка и так далее.. Вручную работы на год. Помогите пожалста...
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
vor я не знаю бейсика... знал бы - не спрашивал бы... Можно тупо написать макрос чтоб искал во втором списке, копировал, вставлял в первый, но как зациклить?
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 27.09.2004 Откуда: moscow
ну если без VB, то можно попробовать юзать следующие текстовые функции и их комбинации с логическими: (названия пишу для русской версии:))
для поиска вхождения стороки в строку:
НАЙТИ(...) ПОИСК(...)
для объединения/дополнения:
СЦЕПИТЬ(...)
Не факт что получиться реализовать все в одном столбце, скороее всего без кучи промежуточных не обойдется, но, как мне кажется, вполне реально сделать.
Можно в тупую в первом элементе первого свободного столбца сделать функцию, которая ищет вхождение первого(N-ого) элемента первого стобца во второй, протянуть до конца второго столбца, где есть совпадение(ЛОГ. 1) - СЦЕПИТЬ(...). и т.д.(во втором свободном столбце, второй эл-т первого.....до конца(протягиванием;)). Результат будет в той ячейке гже СЦЕПИТЬ(), и вероятно по строкам.....ну стороку в столбец не сложно преобразовать). По моему минут за 20 максимум можно сделать.
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
vorbdfy мыла дайте вышлю... 118 килобайт...
Shadow of death у меня ексель на английском знания его - стремятся к нулю...
Добавлено спустя 3 минуты, 33 секунды: можно попробовать по другому задачу поставить предположим в первом списке одна колонка во втором много надо удалить все строки из второго списка, которых нет в первом, и добавить те которых нет во втором
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 27.09.2004 Откуда: moscow
MindHunter Ну названия функции в английской версии будут примерно такими
Text functinos:
FIND(), SEARCH() и STRCPY()(или STRCOPY()) - очень примерно...))
Для второй формулировки помимо функций поиска, сцепления строк и логических еще понадобятся функции удаления строк(частей строк): ДЛТСТР(...) - STRDEL()( STRDELETE() )
_________________ Глава Ордена ненавистников дня св. Валентина.
Member
Статус: Не в сети Регистрация: 27.10.2003 Откуда: Минск
MindHunter _bdfy1985[at]yandex.ru Только ты бы лучше выложил где иначе все советы будут немного мимо ... Просто мне самому придеться решать подобную задачу на днях - так что помогу BTW , у екселя очень неплохой хелп ,а у VBA еще лучше Там главное начать - прога сама подскажет
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
bdfy отправил так я даж не представляю с чего начать хелп перерыл так и не напал на то что мне надо
Добавлено спустя 4 минуты, 15 секунд: Выложить пытался - не выкладывается, ошибка говорит.. МОжет попоже получицца....
Добавлено спустя 3 минуты, 28 секунд: Shadow of death я б с удовольствием всё это проделал, но зная названия функциий я все равно многого не добьюсь. Я даж не предполагаю с чего начать, что и куда писать....
Добавлено спустя 10 часов, 29 минут, 48 секунд: Мне все еще нужна помощь...
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 27.10.2003 Откуда: Минск
MindHunter Ну ты ,мля, умелец задачи задавать
Цитата:
Надо выкинуть из второго списка все строки которых нет в первом, и добавить те названия которых нет во втором...
на самом деле мы будем первый файл дополнять комментариями из второго Алгоритм такой : 1.Два файла сливаем ( хоть руками на первое время) в один с двумя листами . 2.Выделяем первую ячейку (название фильма ) и ищем на втором листе ( вот с поиском и есть основная засада , но вроде нашел ) 3.Нашли ( если нет едем к следующему названию ) ? копируем все что справа от найденной ячейки и переносим на первый лист .Ну это в цикле там ясное дело ... Ща хелп трохи почитаю разберусь к вечеру ( если кто до меня не успеет )
Вот только все цветовое оформление мы при этом теряем так что есть смысл попробовать фильтроваь второй лист с последующим сохранением в другой файл - может и быстрее будет .
BTW ,в VBA кроме хелпа есть запись макроса тоже много чего интересного можно узнать
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
bdfy короче я именно так и пытался делать. токо скопировал инфу из первого списка в дополнительный столбец во втором, и попытался записать макрос, чтоб искал совпадения, и так далее. Но как его зациклить, так и не понял как...
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
bdfy глянул. Даже догнал программный код. С чем себя и поздравляю. НО. Как всегла есть но. Я все еще не знаю с чего начать. Я так понял ты предлагаешь вручную написать целый макрос? Эх был бы это СИ, я б накатал (и то с трудом, ибо все еще его учу), а в бейсике я по сути профан полный...
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 27.10.2003 Откуда: Минск
Тока хотел тут жаловаться что нифига не выходит как напал на след Как говориться все генильное просто.
Код:
Sub Макрос1() Dim i, j As Integer Sheets("Sheet2").Select Cells.Select Selection.Copy Sheets("Sheet3").Select Cells.Select ActiveSheet.Paste ' это лист два копируеться на третий лист.Коряво , но это не главное . i = 1 j = 1 Do While i <= 692 Do While j <= 869 ' 682,869 - это число строк с инфой как ты понял .Можно это дело 'посчитать и в отдельном несложном цикле, но для пары задач и так перебьемся :) 'хорошо что и так работает If Worksheets("Sheet1").Cells(i, 1).NoteText = Worksheets("Sheet3").Cells(j, 1).NoteText Then Worksheets("Sheet3").Rows(j).Delete End If i = i + 1 j = j + 1 Loop Loop End Sub
Куда это засунуть надеюсь знаешь если нет пришли весь файл . Только для начала не забудь список2 на второй лист первого файла забросить( можно конечно и тут макрос написать) .Потом с получившимся файлом колдуй .Результат будет на третьем листе .А и поправь конец второго файла - там английских названии нет , так что вставь русские в первую колонку. И еще : у меня это все делаеться секунд за пять так что не пугайся если ексель подвиснет
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
Так скопировал второй список в первый файл. Скажи только куда этот од записать? В скрипт-едитор? Так уже есть какой-то код. Засунуть куда нить в разрыв и все? Как потом запустить процесс?
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Сейчас этот форум просматривают: N1ghtwish и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения