Сравните два листа Excel - PullRequest
       23

Сравните два листа Excel

2 голосов
/ 16 июня 2010

Как сравнить два листа Excel и определить, какой столбец отсутствует?

(Я хотел бы сравнить список стран из листа A с листом B, а затем отметить, какая страна отсутствует)

Примечание: они в случайном порядке.

Ответы [ 4 ]

4 голосов
/ 16 июня 2010

Вы можете использовать функцию VLOOKUP на листе Excel, чтобы помочь найти "пропущенные" данные на другом листе.Например, возьмите следующие две таблицы:

Sheet1
------
       A          B         C
1     aa 
2     bb
3     cc 
4     dd

.

Sheet2
------
       A          B         C
1     aa 
2     bb
3     dd 

Добавьте следующую формулу в ячейку B1 в Sheet и перетащите формулу вниз через ячейку B4:

=IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$A$3,1,FALSE)),"MISSING FROM OTHER SHEET","")

Sheet1 должны указывать элементы, которые являютсяотсутствует в другом листе в столбце B, например:

Sheet1
------
       A          B                        C
1     aa 
2     bb
3     cc         MISSING FROM OTHER SHEET
4     dd
0 голосов
/ 16 августа 2016

Я обнаружил, что в некоторых версиях Excel есть функция сравнения файлов, но обычно она отключена, хотя и установлена. И однажды я случайно нашёл, как им пользоваться.

Если вы установили TortoiseSVN (действительно): - выберите файлы Excel для сравнения в вашем файловом менеджере - откройте контекстное меню, затем выберите TortoiseSVN> Diff - открывается Excel в «режиме сравнения»

0 голосов
/ 16 июня 2010

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

Если у вас мало страни вам нужно сделать это только один раз, самое быстрое решение:

  • Скопируйте оба столбца во временный лист.
  • Сортируйте оба столбца по алфавиту.
  • Вручную перейдитечерез них и найдите различия.

Если вам нужно сделать это только один раз, но есть много стран, вариант vlookup - самый быстрый.

Если вам нужноповторяйте эту процедуру много раз, и вам нужно использовать этот список где-нибудь (то есть на другом листе), тогда вы можете использовать более сложное решение, включающее два дополнительных столбца с поисками и сводные таблицы.Но в этот момент я хотел бы переместить его в нечто более управляемое, например, в небольшую базу данных.

0 голосов
/ 16 июня 2010

Вы можете использовать ADO с Excel

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

''This is not the best way to refer to the workbook
''you want, but it is very conveient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

''Note that if HDR=No, F1,F2 etc are used for column names,
''if HDR=Yes, the names in the first row of the range
''can be used. 
''This is the Jet 4 connection string, you can get more
''here : http://www.connectionstrings.com/excel

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

''Late binding, so no reference is needed

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")


cn.Open strCon

 ''Query example:
 strSQL = "SELECT Country " _
       & "FROM [Sheet1$] a " _
       & "WHERE Country NOT IN " _
       & "SELECT Country FROM [Sheet2$]"


''Open the recordset for more processing
''Cursor Type: 3, adOpenStatic
''Lock Type: 3, adLockOptimistic
''Not everything can be done with every cirsor type and 
''lock type. See http://www.w3schools.com/ado/met_rs_open.asp

rs.Open strSQL, cn, 3, 3

If rs.Count>0 Then
    MsgBox rs.GetString
End If

Также возможно быстро записать набор записей на лист с помощью CopyFromRecordset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...