如何比较两个范围的Range.Value2与C#

这是我的代码

using Excel = Microsoft.Office.Interop.Excel; Excel.Range col1 = r1.Columns[i]; Excel.Range col2 = r2.Columns[j]; 

有一个快速的方法来比较两个范围的值2吗?

什么是r1? 什么是r2? 是这些单元格值还是一系列单元格值。

在任何情况下,Excel API都会以非盒装方式(作为对象而不是特定types)返回multidimensional array或单元格值。

没有简单的方法来比较这些值,因为电子表格中的值可能是任何types的,您有责任根据您正在使用的电子表格来确定它们的types。 东西,我们不能帮你。

除此之外,一旦你从Value2得到你的返回,你必须像对待两个数组一样对待它,并且比较每个项目1和1。

您可以通过使用Excel数组公式来比较两个范围而不循环。 下面的代码将一个值临时存储在单元格A20中,然后生成True或False值以确认范围是否包含相同的值。 它们是用Excel VBA编写的,但应该可以将它们转换为使用Interop。 varCalc (在第二个例子中)将是一个对象而不是Variant。

 Sub TestCompare() '{=SUM(IF($A$1:$A$4=$B$1:$B$4,1,0))=ROWS($A$1:$A$4)} Dim rngA As Range Dim rngB As Range Dim blnTheSame As Boolean Set rngA = Range("$A$1:$A$4") Set rngB = Range("$B$1:$B$4") Range("A20").FormulaArray = "=SUM(IF(" & rngA.Address & "=" _ & rngB.Address & ",1,0))=ROWS(" & rngA.Address & ")" blnTheSame = Range("A20").Value Range("A20").Clear MsgBox "Are they the same? " & blnTheSame End Sub 

以下版本完全相同,但完全以代码工作,不需要使用单元格来存储临时结果:

 Sub TestCompare2() '{=SUM(IF($A$1:$A$4=$B$1:$B$4,1,0))=ROWS($A$1:$A$4)} Dim rngA As Range Dim rngB As Range Dim varCalc As Variant Dim blnTheSame As Boolean Set rngA = Range("$A$1:$A$4") Set rngB = Range("$B$1:$B$4") varCalc = "=SUM(IF(" & rngA.Address & "=" _ & rngB.Address & ",1,0))=ROWS(" & rngA.Address & ")" blnTheSame = Evaluate(Array(varCalc)) MsgBox "Are they the same? " & blnTheSame End Sub 

既不使用Value2 ,但我不能看出这是比较(s)所必需的。