dusant Ответов: 1

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


Привет,

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

Я не добился никакого прогресса с кодом VBA, потому что не знаю, с чего начать :(

Я приведу вам пример листов и то, что это должно быть после функции копирования / вставки:
это лист 1
Name	Time	Role
Person1	12-30	Admin
Person2	12-30	Admin
Person3	13-00	User
Person4	15-00	Worm
Person5	13-30	User


это лист 2:
Name	Time	Role	Next
Person1	12-30	Admin	User
Person2	12-30	Admin	User
Person3	13-00	User	Worm
Person4	15-00	Worm	User
Person5	13-30	User	Admin


Это лист 1 после процедуры копирования / вставки:
Name	Time	Role	Time	Role	Next
Person1	12-30	Admin	12-30	Admin	User
Person2	12-30	Admin	12-30	Admin	User
Person3	13-00	User	13-00	User	Worm
Person4	15-00	Worm	15-00	Worm	User
Person5	13-30	User	13-30	User	Admin


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

Заранее спасибо за любую помощь.

Что я уже пробовал:

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

Richard MacCutchan

Попробуйте поискать в Google "VBA copy".

1 Ответов

Рейтинг:
10

Graeme_Grant

Вам не нужно копировать, простые формулы поиска сделают ту работу, которую вы хотите.

Разбив его вниз:
1. общим ключом является Имя колонка-Лист1 - это ссылка
2. Найдите Матчing строка (индекс) лица в Имя колонка
3. затем для каждого столбца, который будет сопоставлен, получите ячейку для совпадения

1. Формула Матч является:

=MATCH(A2,Sheet2!A$2:A$6)

где A2 (лист 1) содержит имя для поиска и Sheet2!A$2:A$6 содержит диапазон (массив) имен для поиска.

2. затем, чтобы вытащить значение из листа 2 в лист 1, мы делаем поиск индекса в ячейке каждого целевого столбца:
=INDEX(Sheet2!B$2:B$6,MATCH(A2,Sheet2!A$2:A$6))
=INDEX(Sheet2!C$2:C$6,MATCH(A2,Sheet2!A$2:A$6))
=INDEX(Sheet2!D$2:D$6,MATCH(A2,Sheet2!A$2:A$6))


dusant

Спасибо, я был занят размышлениями о том, как копировать/вставлять данные, и забыл о простой формуле в ячейке, которая может вытягивать данные.

Graeme_Grant

Добро пожаловать. :)

VLookup-это еще одна формула, которую вы могли бы использовать вместо этого, однако Match &Index лучше иллюстрирует, как она работает.