Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.08.2008, 16:50   #1
gavrylyuk
Пользователь
 
Регистрация: 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.
Помогите пожалуйста
Спасибо
gavrylyuk вне форума
Старый 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") ...

Получается
Код:
Sub gavrylyuk128855()
    Dim x As Range, y As Range, i As Long

    Application.ScreenUpdating = False
    Worksheets("1").Activate ''''
    With Worksheets("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, "L") _
                = .Cells(i, "L") ''''
        End If 'Not x Is Nothing
    Next 'i
    End With 'Worksheets("2")
    Application.ScreenUpdating = True ''''
End Sub
дмидми вне форума
Старый 05.08.2008, 14:24   #3
gavrylyuk
Пользователь
 
Регистрация: 26.06.2008
Сообщений: 55
По умолчанию

спасибо єто то что как раз нужно!!!
gavrylyuk вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных 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