2013-11-25 10 views
0

У меня есть 2 листа Excel с почти той же информацией.Сравните столбец в 2 файлах excel в VBA

первый лист выглядит следующим образом:

ID Name empnumber 
1 abc 123 
2 xyz 234 

второй лист выглядит следующим образом:

ID Name empnumber 
1 abc 234 
2 xyz 345 

Мой первый лист содержит временный номер Employee и второй лист содержит конечное число сотрудников.

Я пытаюсь создать макрос, который будет обновлять мой первый столбец столбца-столбца в зависимости от моего второго листа путем сопоставления значения имени или идентификатора.

Я возьму 1-й и 2-й файлы Excel в качестве пользовательского ввода. также сравнивая столбец (имя/идентификатор) в поле ввода, чтобы пользователь решал, что нужно сопоставить.

Псевдо-код:

if abc from 1st sheet==abc from 2nd sheet 
then 
emp number of abc in 1st sheet = empnumber of abc from 2nd sheet. 

Как сделать это в VBA?

Вот идет мой код:

Dim FileNameA As String 
Dim FileNameB As String 
Dim varSheetA As Variant 
Dim varSheetB As Variant 
Dim strRangeToCheck As String 
Dim iRow As Long 
Dim iCol As Long 

strRangeToCheck = "A1:B5" 

iRet = MsgBox("Select forecast file", vbYes, "Forecast file") 
FileNameA = Application.GetOpenFilename() 
If FileNameA = "False" Then Exit Sub 
Set wbkA = Workbooks.Open(Filename:=FileNameA) 
Set sh1 = wbkA.Sheets("Sheet1") 
varSheetA = wbkA.Worksheets("Sheet1").Range(strRangeToCheck) 

iRet = MsgBox("Select Actual file", vbYes, "Actual file") 
FileNameB = Application.GetOpenFilename() 
If FileNameB = "False" Then Exit Sub 
Set wbkB = Workbooks.Open(Filename:=FileNameB) 
Set sh2 = wbkB.Sheets("Sheet1") 
varSheetB = wbkB.Worksheets("Sheet1").Range(strRangeToCheck) 

strcompareColumn = InputBox("Please enter column name to compare", "Data Entry") 
strUpdateColumn = InputBox("Please enter column name to update", "Data Entry") 

End Sub

Теперь мне нужно найти точную строку/столбец из 1-го листа, принимает значение из второго листа и обновление 1-го листа.

+0

@ Jean-FrançoisCorbett: отредактировал мой вопрос и добавил код. Пожалуйста, помогите .. – Prajakta

+0

Вы можете легко решить это с помощью 'VLOOKUP'? – CustomX

+0

@ t.thielemans: Я не хочу использовать формулу. Мне нужно использовать макрос, так как есть много других вещей, которые мне нужно включить в код. – Prajakta

ответ

1

Вот опция без использования макроса, работает только в том случае, если ваши файлы статичны. У вас есть 2 файла, и вы открываете их в том же экземпляре Excel (самый простой способ их ссылки). В вашем основном файле вы добавляете эту формулу в одну из своих ячеек.

=IF(ISERROR(VLOOKUP(A2;[Book2]Sheet1!$A$2:$C$4;3;0));IF(ISERROR(VLOOKUP(B2;[Book2]Sheet1!$B$2:$C$4;2;0));"";VLOOKUP(B2;[Book2]Sheet1!$B$2:$C$4;2;0));VLOOKUP(A2;[Book2]Sheet1!$A$2:$C$4;3;0)) 
+0

Я думал об использовании формулы при чтении вопроса, но не мог придумать один такой +1 для этого! –

+0

+1 от Mehow, отлично себя чувствует: D – CustomX

Смежные вопросы