Сравнение двух CSV-файлов и выходных различий с CSV-файлом или файлом Excel - PullRequest
0 голосов
/ 21 марта 2019

Есть 2 файла CSV, и я хочу сравнить их содержимое и вывести его в другой файл CSV или XLS.

Файл CSV 1

normal, vector, x-axis, y-axis, factor
1552, 8743, 332, 2355, 99.03
8800055, 322, 180, 443222, 555.005
223, 44553, 88553, 88993, 100.004

Файл CSV 2

normal, vector, x-axis, y-axis, factor
1552, 8743, 223, 2355, 99.03
8800055, 322, 180, 443222, 200.005
223, 44553, 88553, 1000, 100.004

Как вы видите выше, различия между двумя значениями находятся в 1-й строке по оси X, 2-й строке и по 3-й строке по оси Y.

Так что в основном ищу сравнение и выводчто для 3-го файла csv или xls, подобного этому,

normal, vector, x-axis, y-axis, factor
0, 0, 1, 0, 0
0, 0, 0, 0, 1
0, 0, 0, 1, 0

В основном 0 означает отсутствие различий, а 1 означает разницу.

Сейчас я использую инструмент сравнения, такой как Beyond Compare или что-то в этом роде.сделать это сравнение.

Есть ли способ, которым я могу сделать это в Excel или что-то еще, а затем вывести результат, как показано выше?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Откройте два CSV-файла в виде листов, а затем используйте третий лист, чтобы отобразить разницу "flag" в виде

B1:

=IF('Sheet 1'!B1='Sheet 2'!B1,0,1)

И заполните лист этой формулой.

Если вы хотите оставить пробелы пустыми (т. Е. Указывать только ячейки с флагами, которые имеют значения), тогда используйте другой IF () в качестве оболочки:

=IF(AND(ISBLANK('Sheet 1'!B1),ISBLANK('Sheet 2'!B1)),'',IF('Sheet 1'!B1='Sheet 2'!B1,0,1))

Затем вы можете экспортировать этот лист какCSV.

0 голосов
/ 21 марта 2019

вы можете использовать VBA для создания макросов.

Вот фрагмент кода для сравнения двух листов и записи вывода на новый лист:

Sub NoMatches() 'Excel vba to remove duplicates.
Dim dic As Object
Dim ar As Variant
Dim ar1 As Variant
Dim var As Variant
Dim i As Long
Dim n As Long

Set dic=Createobject("Scripting.Dictionary")
dic.CompareMode=1
ar=Range("A2", Range("A" & Rows.Count).End(xlUp)).Value
var=Sheet2.Range("A2", Sheet2.Range("A" & Rows.Count).End(xlUp)).Value
ReDim ar1(1 To UBound(var), 1 To 1)

'Loop through ar and add to Dictionary.
For i=1 To UBound(ar)
If Not dic.exists(ar(i, 1)) Then
dic.Add ar(i, 1), ar(i, 1)
End If
Next i

'Identify non Matches
For i=1 To UBound(var)
If Not dic.exists(var(i, 1)) Then
n=n + 1
ar1(n, 1)=var(i, 1)
End If
Next i

'Output Results Remove any Duplication
Sheet3.Range("E2:E" & UBound(var)).Value=ar1
Range("E2:E" & UBound(var)).RemoveDuplicates 1
End Sub

вот ссылка: https://www.thesmallman.com/compare-two-worksheets

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