Цитата:
Цитата kontox
список тех фамилий, который совпадает с первым столбцом. »
|
Фактически, Вам надо найти все совпадения столбцов между собой, так?
Замечание: в первом столбце у Вас есть пустая ячейка (A44). Это будет препятствовать корректному определению диапазона ячеек столбца. Я убрал эту пустую ячейку.
У меня под Office 2003 сработало так (простой запрос на пересечение с группировкой):
Код:
Sub Sample()
Const adCmdText = &H1
Const adExecuteNoRecords = &H80
Dim strAddressColumnA As String
Dim strAddressColumnB As String
With ThisWorkbook.Worksheets.Item(1)
strAddressColumnA = .Name & "$" & .Range("A1", .Range("A1").End(xlDown)).Address(False, False)
strAddressColumnB = .Name & "$" & .Range("B1", .Range("B1").End(xlDown)).Address(False, False)
End With
With CreateObject("ADODB.Connection")
.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 8.0;" & _
"HDR=No;"";"
.Execute _
"INSERT INTO [" & ThisWorkbook.Worksheets.Item(2).Name & "$] IN '' [Excel 8.0;Database=" & ThisWorkbook.FullName & ";HDR=No;] " & _
"SELECT ColumnB.F1 " & _
"FROM [" & strAddressColumnB & "] ColumnB INNER JOIN [" & strAddressColumnA & "] ColumnA " & _
"ON ColumnB.F1 = ColumnA.F1 " & _
"GROUP BY ColumnB.F1"
.Close
End With
End Sub
Если не сработает — смотрите Connection String под Вашу версию Office
здесь.
Рассчитано, что данные будут расположены непрерывно на
первом листе Рабочей книги с первой же строки в первых двух столбцах без заголовков. Результат совпадений будет помещён на
второй лист (он а) должен быть, и б) должен быть пустым).
Результат из приведённого примера