【问题标题】:Comparing 2 CSV files & Outut differences to a CSV or Excel File将 2 个 CSV 文件和输出差异与 CSV 或 Excel 文件进行比较
【发布时间】:2019-03-21 11:08:00
【问题描述】:

有 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 轴上。

所以基本上我正在寻找一个比较并输出到这样的第三个 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 或其他东西中执行此操作,然后输出如上所示的结果?

【问题讨论】:

  • 将每个 csv 打开到不同的工作表中,然后使用数组循环遍历这些值并生成一个比较矩阵。

标签: excel csv


【解决方案1】:

将两个 csv 文件作为工作表打开,然后使用第三个工作表将差异“标志”显示为

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。

【讨论】:

  • 区分大小写吗?
  • Excel 区分大小写,是的。如果您不区分大小写,则在比较它们时将单元格值映射为大写。
【解决方案2】:

您可以使用 VBA 创建宏。

这是一个代码 sn-p 比较两张表并将输出写入新表:

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

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多