Сравнение массивов vba excel
Доброго времени суток!
Прошу помощи в написании функции для сравнения двух двумерных массивов размерностью [n, 2].
Dim i As Long
Dim k As Long
Данные сравниваются, но почему-то не все.
Подскажите, пожалуйста, в чём я ошибаюсь?
Доброго времени суток!
Прошу помощи в написании функции для сравнения двух двумерных массивов размерностью [n, 2].
Dim i As Long
Dim k As Long
Данные сравниваются, но почему-то не все.
Подскажите, пожалуйста, в чём я ошибаюсь? Travelstar
Dim i As Long
Dim k As Long
Данные сравниваются, но почему-то не все.
Подскажите, пожалуйста, в чём я ошибаюсь? Автор - Travelstar
Дата добавления - 16.05.2014 в 09:28
Вообще со словарём было бы быстрее - ну если строк пара тысяч, то не важно. Почему решили что не все? Думаю все, и даже излишне все - ведь после получения результата сравнения продолжаются.
Вообще со словарём было бы быстрее - ну если строк пара тысяч, то не важно. Hugo Вот и по логике, вроде как всё и проверяется. А строк и действительно много. по несколько тысяч в каждом массиве.
А вот факт показывает несколько не тот результат (очень жаль, что не могу сейчас вложить программку. ).
В массивы я вгоняю диапазон из разных книг, первый столбец - данные типа String, второй - Date и при проверке, если совпали String-и, то проверяю даты, так вот, при проверке работы алгоритма видно, что не все значения, хоть они и равны, совпадают.
Возможно ли такая ситуация, что в одном из массивов в значениях типа String присутствуют буквы не EN, а RUS? / Вот и по логике, вроде как всё и проверяется. А строк и действительно много. по несколько тысяч в каждом массиве.
А вот факт показывает несколько не тот результат (очень жаль, что не могу сейчас вложить программку. ).
В массивы я вгоняю диапазон из разных книг, первый столбец - данные типа String, второй - Date и при проверке, если совпали String-и, то проверяю даты, так вот, при проверке работы алгоритма видно, что не все значения, хоть они и равны, совпадают.
Возможно ли такая ситуация, что в одном из массивов в значениях типа String присутствуют буквы не EN, а RUS? / Travelstar в значениях типа String присутствуют буквы не EN, а RUS
Редко, но бывает.
Если сравниваете строки, то добавьте Трим (лишние пробелы бываю намного чаще), типа такого
[vba] [/vba]
и еще , чтобы вести сравнение без учета регистра, в самомо верху модуля
[vba] в значениях типа String присутствуют буквы не EN, а RUS
Редко, но бывает.
Если сравниваете строки, то добавьте Трим (лишние пробелы бываю намного чаще), типа такого
[vba] [/vba]
и еще , чтобы вести сравнение без учета регистра, в самомо верху модуля
[vba] в значениях типа String присутствуют буквы не EN, а RUS
Редко, но бывает.
Если сравниваете строки, то добавьте Трим (лишние пробелы бываю намного чаще), типа такого
[vba] [/vba]
и еще , чтобы вести сравнение без учета регистра, в самомо верху модуля
[vba] [/vba] Автор - nilem
Дата добавления - 16.05.2014 в 11:45
Да и даты там может в секундах отличаются.
Покажите файл - можно неоригинальный
Ещё раз столкнулся - два числа совершенно одинаковые всюду глазом (и в Locals тоже) кодом не равны. Но если оба перевести в string - то ОК.
Да и даты там может в секундах отличаются.
Покажите файл - можно неоригинальный
Ещё раз столкнулся - два числа совершенно одинаковые всюду глазом (и в Locals тоже) кодом не равны. Но если оба перевести в string - то ОК. Hugo
Ещё раз столкнулся - два числа совершенно одинаковые всюду глазом (и в Locals тоже) кодом не равны. Но если оба перевести в string - то ОК. Автор - Hugo
Дата добавления - 16.05.2014 в 11:58
Спасибо за подсказки, но не помогло.
Вот несколько файлов
- Checking_Test.xlsm - программа
- Проверяемый файл.xls - то, что будет когда-то проверяться // пока пустой
- Отчёт PCN.xls - файл с которым мне необходимо сравнивать
- Отчёт Sat.xls - файл, который необходимо сравнить с Отчёт PCN
Алгоритм пока пишется, это наработки.
Если будут у кого-нибудь интересные замечания буду признателен.
Спасибо за подсказки, но не помогло.
Вот несколько файлов
- Checking_Test.xlsm - программа
- Проверяемый файл.xls - то, что будет когда-то проверяться // пока пустой
- Отчёт PCN.xls - файл с которым мне необходимо сравнивать
- Отчёт Sat.xls - файл, который необходимо сравнить с Отчёт PCN
Алгоритм пока пишется, это наработки.
Если будут у кого-нибудь интересные замечания буду признателен. Travelstar
Алгоритм пока пишется, это наработки.
Если будут у кого-нибудь интересные замечания буду признателен. Автор - Travelstar
Дата добавления - 16.05.2014 в 12:19
PS: функция называется Compare(arr1 as Variant, arr2 as Variant))
PS: функция называется Compare(arr1 as Variant, arr2 as Variant)) Travelstar
PS: функция называется Compare(arr1 as Variant, arr2 as Variant)) Автор - Travelstar
Дата добавления - 16.05.2014 в 12:21
Не, я отказываюсь разбираться.
Всё так непрозрачно, эта привязка к активной в некий момент книге/листу. Ещё куча MISSING, ну да это меньшее.
Покажите два файла, напишите код открытия этих конкретных файлов, определения диапазонов, передачу диапазонов на сравнение - вот тогда можно посмотреть что где как сравнивается или нет.
Я так и не смог ничего запустить - какие файлы открывать, что нажимать.
Не, я отказываюсь разбираться.
Всё так непрозрачно, эта привязка к активной в некий момент книге/листу. Ещё куча MISSING, ну да это меньшее.
Покажите два файла, напишите код открытия этих конкретных файлов, определения диапазонов, передачу диапазонов на сравнение - вот тогда можно посмотреть что где как сравнивается или нет.
Я так и не смог ничего запустить - какие файлы открывать, что нажимать. Hugo
Всё так непрозрачно, эта привязка к активной в некий момент книге/листу. Ещё куча MISSING, ну да это меньшее.
Покажите два файла, напишите код открытия этих конкретных файлов, определения диапазонов, передачу диапазонов на сравнение - вот тогда можно посмотреть что где как сравнивается или нет.
Я так и не смог ничего запустить - какие файлы открывать, что нажимать. Автор - Hugo
Дата добавления - 16.05.2014 в 12:51
очень нужна Ваша помощь. Есть два массива (пример приложил, размерность у них условная, на самом деле 10 тыс. и более записей в каждом), если их сравнить, в предыдущем массиве (в январе) произошли изменения (по данным последующего массива один из объектов исчез, он отмечен желтым цветом и обозначен "1").
Возможно сделать макрос для автоматизации этого процесса? Чтобы "ушедшие" объекты как-то выделялись, к примеру, единицами? Опираться при сравнении на цены и бюджеты объектов нельзя, т.к. их колебания условно составляют +-5%. Если конечно это никак нельзя заложить в код.
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
Сравнение двух многомерных массивов
Добрый день, помогите разобраться в простом примере работы с массивами ибо чтение теории заводит в.
Создание и сравнение двух массивов
Добрый день. Помогите написать VBA скрипт для екселя. суть : есть список сотрудников(фамилии).
Сравнение двух колонок (Excel)
Есть задача: нужно сравнить две колонки в экселе и что важное, нужно организовать так, чтобы.
Сравнение двух листов Excel
Требуется сравнить два листа EXCEL, заранее количество столбцов и строк в листах неизвестно, но.
а что гарантирует уникальность записи в таблицах?
первые три столбца?
пс. у Вас там на Пречистенке чудеса какие-то
а что гарантирует уникальность записи в таблицах?
первые три столбца?
пс. у Вас там на Пречистенке чудеса какие-то
Круто! Хорошо работает! А можно еще заложить в код изменение площади в районе 3% или это космос получится? и где у вас площадь? я не телепат, сорриэто будет совершенно другой код.
нужен другой подход - и я пока даже не определился, какой именно.
кстати, скорее всего, будет работать на порядок медленнее. и где у вас площадь? я не телепат, сорри
это будет совершенно другой код.
нужен другой подход - и я пока даже не определился, какой именно.
кстати, скорее всего, будет работать на порядок медленнее.
давайте на всякий случай уточним задачу?
надо:
для каждой записи из "правой" таблицы найти в "левой" таблице хотя бы одну в точности соответствующую ей по первым двум полям запись, причем значение третьего поля должно отличаться не более чем на 3%.
если ни одной такой записи не найдено, то напротив искомой записи слева ставим единичку.
давайте на всякий случай уточним задачу?
надо:
для каждой записи из "правой" таблицы найти в "левой" таблице хотя бы одну в точности соответствующую ей по первым двум полям запись, причем значение третьего поля должно отличаться не более чем на 3%.
если ни одной такой записи не найдено, то напротив искомой записи слева ставим единичку.
Сравнение двух текстов в документе Excel
Необходимо сопоставить ячейки с текстом, имеющие описание одного и того же события, набранного .
Сравнение данных из двух разных файлов Excel
Добрый день, форумчане! До этого не имел дело с VBA. Начинаю только изучать. Начальство.
Excel: сравнение двух таблиц по первому столбцу
Помогите пожалуйста буду благодарен. Необхордимо сравнить две таблицы, по первому столбцу(part no).
Сравнение двух файлов Excel для выявления изменений
Добрый день! Excel 2010. В файл, на одном листе с неизменным количеством столбцов, раз в.
К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.
Суть задачи.
1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".
Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.
Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".
Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".
Заранее благодарю за содействие.
К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.
Суть задачи.
1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".
Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.
Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".
Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".
Заранее благодарю за содействие. Taurus
К сожалению, не разбираюсь в VBA, поэтому прошу помощи у знатоков в решении следующей задачи.
Суть задачи.
1. Лист 1 "Массив" содержит информацию (время от времени редактируется пользователем и вносится только в столбец "А"), которая проверяется (сопоставляется) со значениями эталонного справочника - см. Лист 2 "Эталон".
Если хотя бы одно значение листа 1 не совпадает (хотя бы на один символ, пробел до и после значения не учитывается) со всеми значениями эталонного справочника (по столбцам от А до J), тогда такое ложное значение (слово) в листе 1 подсвечивается красным цветом, а если такое значение совпадает со значением эталонного справочника, тогда значение (слово) листа 1 станет зеленого цвета.
Пример того, каким должен быть результат при работе макроса, содержится в файле "Как должно работать".
Пожалуйста, макрос пропишите в файле задача таким образом, чтобы макрос запускался при нажатии кнопки "запустить".
Заранее благодарю за содействие. Автор - Taurus
Дата добавления - 10.01.2014 в 15:21
= Мир MS Excel/Сравнение массивов - Мир MS Excel
Войти через uID
Войти через uID
Добрый вечер.Есть три массива с числами.Необходимо сравнить данные в них и при совпадении выделить в список.Если по отдельности перебором каждый,это понятно,а вот в массиве пока понимаю не до конца. Добрый вечер.Есть три массива с числами.Необходимо сравнить данные в них и при совпадении выделить в список.Если по отдельности перебором каждый,это понятно,а вот в массиве пока понимаю не до конца. megavlom Добрый вечер!Вы не первый день на форуме и должны прекрасно знать, что прикрепленный файл-пример значительно ускорит решение. Или Вам быстро не нужно? К тому же это является нарушением 3 пункта правил форума. Добрый вечер!
Вы не первый день на форуме и должны прекрасно знать, что прикрепленный файл-пример значительно ускорит решение. Или Вам быстро не нужно? К тому же это является нарушением 3 пункта правил форума. kim Извините,что не доглядел отсутствие файла.Хотя с нашей связью. Извините,что не доглядел отсутствие файла.Хотя с нашей связью. megavlom Не совсем понял, как Вам нужен список, да и это вероятно не главное - поэтому пока вывожу в окно отладки (можно на лист/массив/строку выводить):
[vba]
Но в общем тот же перебор, но усовершенствованный - сперва загоняем данные в массивы, потом в словари, потом первый словарь сверяем с двумя другими.
Вариант с признаком столбца:
[vba]
[vba]
Но в общем тот же перебор, но усовершенствованный - сперва загоняем данные в массивы, потом в словари, потом первый словарь сверяем с двумя другими.
Вариант с признаком столбца:
[vba]
Но в общем тот же перебор, но усовершенствованный - сперва загоняем данные в массивы, потом в словари, потом первый словарь сверяем с двумя другими.
Вариант с признаком столбца:
[vba]
Подскажите, есть ли в VBA функция сравнения двух масивов? Проблема в следующем, есть два масива разного размера(клиенты на начало недели и клиенты на конец недели), необходимо путем сравнения определить какие клиенты добавились, а какие выбыли за неделю.
- Option Explicit
- Option Base 1
- Function ArraysDifference(primArray As Variant , secondArray As Variant ) As Variant
- Dim newItems() As String 'конечный массив
- Dim item As Variant 'текущий элемент
- Dim tempItems As New Collection 'временная коллекция
- Dim count As Integer 'счётчик элементов
- 'заполняем коллекцию элементами первичного массива
- For Each item In primArray
- tempItems.Add item, item
- Next item
- 'проходим по второму массиву и пытаемся добавить его элементы в коллекцию;
- 'если такой элемент уже добавлен в первом цикле, генерируется ошибка;
- 'если ошибки не произошло, добавляем новый элемент в конечный массив
- count = 0
- For Each item In secondArray
- On Error Resume Next
- tempItems.Add item, item
- If Err = 0 Then
- count = count + 1
- ReDim Preserve newItems(count)
- newItems(count) = item
- End If
- On Error GoTo 0
- Next item
- ArraysDifference = newItems
- End Function
- Sub TestArrayDifference()
- Dim array1, array2 As Variant
- Dim newEmploy, escEmploy As Variant
- 'сотрудники в начале недели
- array1 = Array( "Дима" , "Вася" , "Петя" , "Костя" , "Паша" )
- 'сотрудники в конце недели
- array2 = Array( "Лёха" , "Игорь" , "Петя" , "Костя" , "Боря" )
- 'новые сотрудники
- newEmploy = ArraysDifference(array1, array2)
- 'выбывшие сотрудники
- escEmploy = ArraysDifference(array2, array1)
- End Sub
Массив можно заполнять из разных источников: диапазонов, файлов, функций. Какой вариант Вас интересует?
- Option Explicit
- Option Base 1
- Sub RangeArray()
- Dim theNumbers() As Integer 'массив
- Dim theRange As Range 'диапазон
- Dim item As Variant 'ячейка диапазона
- Dim i As Integer 'счётчик
- 'определяем диапазон
- Set theRange = ThisWorkbook.Worksheets( "Sheet1" ).Range( "A1:A5" )
- 'проходим по всем ячейкам и заносим их значения в массив
- i = 0
- For Each item In theRange
- i = i + 1
- ReDim Preserve theNumbers(i)
- theNumbers(i) = CInt (item)
- 'и сразу выводим
- Debug.Print theNumbers(i)
- Next item
- End Sub
Оператор Redim Preserve переопределяет размерность массива, сохраняя все его элементы.
Возможен и более рациональный вариант, в котором размерность массива определяется непосредственно перед циклом:
Читайте также: