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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 09:00   #1
Alex+
Новичок
Джуниор
 
Регистрация: 30.08.2012
Сообщений: 3
Восклицание Поиск значений на листе. Нужно оптимизировать

Здравствуйте!

Проблема такая... задание подыскать значению на одном листе аналогичное значение с другого и скопировать значения со второго листа в первый... всё бы ничего, но таблицы большие, в связи с этим вопрос: как оптимизировать данный код и какие функции использовать для поиска? А то работает часов 6...

Sub macros_proc()
Dim i, j As Integer
For i = 1 To 15000
For j = 1 To 35000
If Worksheets("L1").Cells(i, 1) = Worksheets("L2").Cells(j, 1) Then
Worksheets("L1").Cells(i, 2) = Worksheets("L2").Cells(j, 2)
Worksheets("L1").Cells(i, 3) = Worksheets("L2").Cells(j, 3)
End If
Next j
Next i
End Sub

Заранее спасибо!

Последний раз редактировалось Alex+; 30.08.2012 в 09:08.
Alex+ вне форума Ответить с цитированием
Старый 30.08.2012, 09:08   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Формулы типа:
Код:
=ИНДЕКС(L2!A:C,ПОИСКПОЗ(A1; L2!A:A; 1); 2) - в ячейку B1
=ИНДЕКС(L2!A:C,ПОИСКПОЗ(A1; L2!A:A; 1); 3) - в ячейку С1
и заполнить ими весь массив на листе L1
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 30.08.2012, 09:25   #3
Alex+
Новичок
Джуниор
 
Регистрация: 30.08.2012
Сообщений: 3
По умолчанию

В данном случае выводит #Н/Д (значение недоступно).


отдельно
=ПОИСКПОЗ(A1; 'L2'!A:A; 1) тоже выдаёт #Н/Д

=ИНДЕКС(L2!A:C;ПОИСКПОЗ(A1; L2!A:A; 1); 2)
На некоторых строках L1 вместо #Н/Д выдаёт значения последней строки листа L2
=ПОИСКПОЗ(A1; 'L2'!A1:A35000; 1)
На некоторых строках выдаёт номер, но он не является правильным номером строки листа L2

Последний раз редактировалось Alex+; 30.08.2012 в 09:53.
Alex+ вне форума Ответить с цитированием
Старый 30.08.2012, 10:03   #4
Alex+
Новичок
Джуниор
 
Регистрация: 30.08.2012
Сообщений: 3
По умолчанию

Всё зашарил.
=ИНДЕКС(L2!A:C;ПОИСКПОЗ(A1; L2!A:A; 0); 2) - в ячейку B1
=ИНДЕКС(L2!A:C;ПОИСКПОЗ(A1; L2!A:A; 0); 3) - в ячейку С1
вот так надо было - тип сопоставления в поиске 0 - полное совпадение.

DiemonStar, большое спасибо!
Alex+ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление значений Имен на листе tae1980 Microsoft Office Excel 5 16.02.2012 21:26
Скорректировать код окраски повторяющих значений в листе.. Slavatron1984 Microsoft Office Excel 2 19.12.2011 17:06
отражение на листе значений из других листов alexarorel Microsoft Office Excel 1 20.04.2011 20:23
Подсчет количества значений на листе edikamn Microsoft Office Excel 5 28.09.2010 09:13
сверка значений на другом листе подстановка подходящего marc-nikita Microsoft Office Excel 5 07.02.2010 14:10