|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.08.2008, 16:50 | #1 |
Пользователь
Регистрация: 26.06.2008
Сообщений: 55
|
Перенос данных из ячеек
Добрый день. Помогите пожалуйста подправить код
Dim x As Range, y As Range, i As Long Application.ScreenUpdating = False Sheets("1").Activate With Sheets("2") For i = 10 To .Cells(Rows.Count, "A").End(xlUp).Row Set x = Columns("A").Find(what:=.Cells(i, "A"), LookAt:=xlWhole) If Not x Is Nothing Then Set y = Columns("L").Find(what:=.Cells(i, "B"), LookAt:=xlWhole) If Not y Is Nothing Then Cells(x.Row, y.Column) = .Cells(i, "L") End If Next End With Этот код ищет на листе 2 совпадение с листом 1 по двум колонкам А и В, и при совпадении записывает значение из листа 2 на лист 1 в соответствующую колонку. А колонка - это имя, а В - дата. Этот код все правильно делает только результат выводит в колонку B, а мне нужно в L. Помогите пожалуйста Спасибо |
04.08.2008, 19:23 | #2 |
Форумчанин
Регистрация: 06.03.2008
Сообщений: 352
|
ТЗ непонятно
Опишите, пожалуйста, своими словами подробно: что где ищется, откуда что берётся и что куда пишется.
P.S. Приведённый код никак не может что-то записать в колонку B листа 1: единственный оператор, который может что-то куда-то записать, запишет в колонку L. P.P.S. Мелкие придирки 1) Вместо Sheets здесь лучше Worksheets, иначе можешь и не заметить, что пытаешься найти ячейку-строку-etc. на листе диаграммы. 2) Хэлп ёкселя недвусмысленно требует после Application.ScreenUpdating = False обязательно ставить Application.ScreenUpdating = True 3) Опять-таки, в большом (а лучше всего в любом) коде желательно исходить из того, что неизвестно наверняка, какой именно лист активен, - ведь это может быть и лист диаграммы. Поэтому конструкция With Worksheets("2") For i = 10 To .Cells(Rows.Count, ... , которая рассматривает ячейки листа "2", а счётчик строк берёт с "неведомого" активного листа, чревата неприятностями. Так что лучше перед Rows поставить точку: ....Cells(.Rows.Count,... Хотя, конечно, бывают случаи, когда работа с неактивным листом невозможна. 4) Прочтите Remarks в хэлпе на Find Method. В инструкции Set x = Columns("A").Find(... маловато параметров. 5) После успешного поиска Set y = Columns("L").Find(... ячейка y гарантированно находится в колонке L, так что следующий за поиском оператор If Not y Is Nothing Then Cells(x.Row, y.Column) ... вполне можно записать как If Not y Is Nothing Then Cells(x.Row, "L") ... Получается Код:
|
05.08.2008, 14:24 | #3 |
Пользователь
Регистрация: 26.06.2008
Сообщений: 55
|
спасибо єто то что как раз нужно!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос данных | Nesta1384 | Microsoft Office Excel | 4 | 19.01.2009 02:28 |
Перенос данных из ячеек при условии | gavrylyuk | Microsoft Office Excel | 12 | 29.07.2008 12:33 |
Сравнение и перенос данных | miheus | Microsoft Office Excel | 1 | 29.11.2007 16:42 |
Перенос данных. | Victor | Microsoft Office Excel | 8 | 01.09.2007 21:02 |
перенос база данных | asale | БД в Delphi | 2 | 21.06.2007 11:35 |