這裏是我的代碼如何比較兩個範圍的Range.Value2用C#
using Excel = Microsoft.Office.Interop.Excel;
Excel.Range col1 = r1.Columns[i];
Excel.Range col2 = r2.Columns[j];
是否有一個快速的方法對我來說,比較上述兩個範圍的值2?
這裏是我的代碼如何比較兩個範圍的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將返回到你要麼一座耗資維陣列或在未裝箱方式將細胞值(作爲一個對象,而不是一個特定的類型)。
有比較值,如在電子表格中的值可以是任何類型的沒有簡單的方法,它是你的責任,以弄清楚他們是基於您正在使用的電子表格上哪些類型。有些事情,我們無法幫助你。
從除此之外,一旦你從值2得到你回報,你必須把它當作你將兩個陣列和1
,r1和r2都是單元格值的範圍。現在我逐一比較每個項目,是否有更快或更簡單的方法? – startewho
我不認爲有,即使有它會在下面做同樣的事情。你可以嘗試並行,並且比較幾個項目並行。 –
你可以比較兩個範圍比較各個項目1沒有通過使一個Excel的循環使用陣列式。以下代碼臨時將值存儲在單元格A20中,然後生成值True或False以確認範圍是否包含相同的值。他們寫在Excel VBA,但應該可以將它們轉換爲使用Interop。 varCalc
(在第二個例子中)將是一個對象而不是變體。
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
,但我可以」不要認爲這是比較必要的。
比較他們在哪些方面?等於?共享元素?總和? – Sayse
@Sayse比較Range.Value2 – startewho