Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
ko100
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 8
1

Копирование ячеек таблицы 2, соответствующих искомым значениям таблицы 1

30.09.2015, 16:31. Просмотров 1244. Ответов 7
Метки нет (Все метки)

Перечитал форум, но похожего не нашел. В общем: Имеется таблица 1, в ней 2 столбца(A и B, грубо говоря).
Заполнен только столбец A с названиями. В нем порядка 10 тыс. значений. Имеется любая другая таблица с теми же двумя столбцами, в котором заполнено оба столбца C,D C -названия, D - значения, НО количество строк во второй таблице все время разное и к тому же не все значения столбца C совпадают с A.
Надо: Сравнивать значения столбца A и C. Если есть совпадения, то копировать поле D в соответсвующую ячейку B.
Повторюсь: Количество строк в таблицах всегда разное, совпадение значений неполное. Спасибо.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2015, 16:31
Ответы с готовыми решениями:

Копирование выделенных несмежных ячеек таблицы excel
Доброго вечера. Ломаю голову над следующей задачей. Есть таблица с данными. В ручную выделяем...

Копирование ячеек таблицы Word в другой документ
Доброго времени суток. Задача такова - нужно перенести содержимое нескольких ячеек таблицы...

Доступ к значениям сводной таблицы через VBA
Вопрос 1. С помощью каких методов и свойств Pivot Table в VBA можно получить доступ к значению...

Заполнить ListBox выборкой по значениям из другого столбца таблицы
Доброе время суток, уважаемые форумчане! Не могу никак сообразить, как сделать выборку из таблицы...

Подстановка заголовка таблицы к похожим значениям в первом столбце
Всем доброго времени суток, помогите пожалуйста сделать макрос. У меня имеется 2 таблицы в столбце...

7
ko100
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 8
30.09.2015, 17:31  [ТС] 2
Лист Microsoft Office Excel.xlsx Пример
0
ko100
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 8
30.09.2015, 20:50  [ТС] 3
я так понял, что скорей всего нужна программа, на vba, но сам не могу, помогите пожалуйста.

Добавлено через 1 час 6 минут
Visual Basic
1
2
3
4
5
6
7
Sub program1()
For i = 1 To 300
For y = 1 To 300
If Cells(i, 1).Value = Cells(y, 3).Value Then Cells(i, 2).Value = Cells(y, 4).Value
Next
Next
End Sub
Пока сделал так. Все работает, но. я вписал 300 и excel завис. В моей же работе должно быть вписано порядка 9000. Как оптимизировать?)

Добавлено через 2 минуты
нужно, чтобы он пропускал уже вписанные поля в столбец 2, и при нахожении соответсвий дальше не искал их, а переходил к следующему
0
Viv26
4 / 4 / 3
Регистрация: 29.09.2015
Сообщений: 10
01.10.2015, 11:29 4
Добрый день! А использовать =впр()
1
Вложения
Тип файла: xlsx 580647d1443623488.xlsx (12.3 Кб, 7 просмотров)
ko100
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 8
01.10.2015, 12:55  [ТС] 5
Впр здесь не работает ввиду того, что он ищет тольео при соответствии всех значений. А во второй таблице из 9 тысяч совпасть может вообще одно

Добавлено через 14 минут
хотя твой пример вроде работает, на маленькой табличке, можно ли сделать так, что не найдя значение он не трогал ячейку и не вписывал туда ничего, ибо таблиц 2 будет много где то есть совпадения где то нет, чтобы он не портил ее

Добавлено через 48 секунд
еще слышал, если в конце ставить 1, и делать алфавитный порядок то работает быстрее. такая возможность есть?
0
snipe
3181 / 1143 / 281
Регистрация: 07.08.2013
Сообщений: 2,898
01.10.2015, 13:16 6
Лучший ответ Сообщение было отмечено ko100 как решение

Решение

если совсем просто то так (пример сделан под ваш файлик)

Visual Basic
1
2
3
4
5
6
7
8
9
Sub macro1()
For i = 10 To 18
If Cells(i, 2) = "" Then
For j = 10 To 18
If Cells(i, 1) = Cells(j, 3) Then Cells(i, 2) = Cells(j, 4): Exit For
Next j
End If
Next i
End Sub
Добавлено через 2 минуты
Про оптимизацию чуть позже
1
ko100
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 8
01.10.2015, 17:04  [ТС] 7
Цитата Сообщение от snipe Посмотреть сообщение
Sub
ошибка в коде type mistmatch/
А нет, работает, я неправильно запустил.

Добавлено через 2 часа 56 минут
snipe, твой код отлично работает, достаточно быстро 90 000 перебрал за 2 минуты. Только нужно добавить еще, что если что-то во втором столбике заполнено, эти ячейки тоже пропускать, чтоб он их не трогал
0
snipe
3181 / 1143 / 281
Регистрация: 07.08.2013
Сообщений: 2,898
02.10.2015, 03:31 8
Цитата Сообщение от ko100 Посмотреть сообщение
Только нужно добавить еще, что если что-то во втором столбике заполнено, эти ячейки тоже пропускать, чтоб он их не трогал
такая проверка есть - вот она

Visual Basic
1
If Cells(i, 2) = "" Then
1
02.10.2015, 03:31
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2015, 03:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сложение ячеек таблицы в VB Word
Это задание: На листе Word строится таблица и заполняются ячейки с исходными данными. При нажатии...

Word: объединение ячеек таблицы
С помощью макроса добавляю таблицу в TextBox на страницу. Дальше пытаюсь объединить ячейки. В...

Доступ к содержимому ячеек сводной таблицы
Доброго времени суток! Имеется сводная таблица. Каждому значению первой колонки соответствует одно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.