Как сравнить диапазон Range 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 вернет вам либо mutli-мерный массив, либо значение ячеек в unboxed (как объект, а не определенный тип).

Нет простого способа сравнить значения, поскольку значения в электронной таблице могут быть любого типа, и вы несете ответственность за то, какие типы они основаны на электронной таблице, с которой вы работаете. Что-то, мы не можем вам помочь.

Помимо этого, как только вы получите свое возвращение из Value2, вам придется обращаться с ним, как если бы вы использовали два массива и сравнивали каждый элемент 1 на 1.

Вы можете сравнивать два диапазона без циклов, используя формулу Excel. Следующий код хранит значение временно в ячейке A20, затем выдает значение True или False, чтобы подтвердить, содержат ли диапазоны одинаковые значения. Они написаны в Excel VBA , но их можно конвертировать для использования Interop. varCalc (во втором примере) будет Object, а не 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 , но я не вижу, что это необходимо для сравнения (сравнения).

  • Не удается открыть файл excel с помощью C #
  • Два CellValues ​​с разными стилями в ячейке OPEN XML SDK 2.0
  • Как предотвратить Excel от удвоения апострофов?
  • Как получить значения из ячеек существующего файла excel? C #
  • Сохранение файла excel в папке приложения и загрузка содержимого на SQL Server с использованием оконных форм и C #
  • Чтение Excel 2.0 в datatable
  • C # заполняет данные, чтобы excel.range не работал
  • C # excel data validation выпадающий список throwserror
  • найти последнюю использованную строку в столбце в окнах c #
  • Исключение Excel HRESULT: 0x800A03EC от ChartArea.Copy ()
  • Текст в столбце Excel
  • Interesting Posts

    Операция не разрешена, когда объект закрыт. Создайте оператор таблицы в первой строке?

    Получить значение выпадающего списка в VBA и получить имя выпадающего списка … нигде не найти?

    Новичок в макросах Microsoft Office

    Ошибка выполнения «52» Неверное имя файла или номер с функцией Dir $

    Число округлений Excel по формулам сравнения

    Как найти среднее значение * наиболее * среднее значение для среднего значения в наборе значений в Excel?

    Реверсив логику обратного соответствия, чтобы избежать использования вспомогательной строки

    Использование Averageif для 2 критериев в массиве в Excel

    Сортировка в соответствии с днем ​​рождения

    Показывать десятичные знаки в процентах и ​​десятичной запятой только в случае необходимости

    Как избежать косой черты в csv?

    Ошибка Excel, останавливает запуск макроса

    Создание диаграммы с горизонтальной линией

    Объявить переменную Active Worksheet в VBA

    Excel: объединить с датой результат имеет число, добавленное вместо даты

    Давайте будем гением компьютера.