有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或类似工具中执行然后输出如上所示的结果?
答案 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