比较2个CSV文件和输出差异到CSV或Excel文件

时间:2019-03-21 11:08:00

标签: excel csv

有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

如上所示,两者之间的区别在于第一行x轴,第二行系数和第三行y轴。

所以基本上我正在寻找一个比较结果,并将其输出到这样的第三个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 个答案:

答案 0 :(得分:1)

打开两个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。

答案 1 :(得分:0)

您可以使用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