Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 3
Регистрация: 11.06.2013
Сообщений: 38
1

Сравнение диапазонов ячеек

05.04.2015, 08:47. Показов 2295. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Простая задача сравнить два диапазона ячеек(A1:A3 и C1:C5), если в одном диапазоне есть значения, которых нет в другом диапазоне, то скопировать эти значения куда-нибудь. Как сравнить диапазоны я разобрался, но вопрос, как мне выбрать именно те значения, которых нет в диапазоне А1:А3, не могу сообразить подскажите пожалуйста.
Visual Basic
1
2
3
4
5
6
7
8
Function cmp()
Dim a As Range, c As Range, n As Integer
Dim myarr
  For Each a In [A1:A3]
    For Each c In [C1:C5]
      If c <> a And Len(a) <> 0 Then myarr = Array(c.Value)
Next c, a
End Function
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2015, 08:47
Ответы с готовыми решениями:

Сравнение двух диапазонов ячеек на совпадение
Здравствуйте! Подскажите пожалуйста... Имеется 2 диапазона ячеек А1:A3 и C1:C3, в которых забиты...

Сравнение двух диапазонов на идентичность без анализа отдельных ячеек
Здравствуйте! Подскажите, как сравнить два диапазона на результат ЛОЖЬ или ИСТИНА (в коде 10-я...

Сравнение диапазонов
Ребят, в коде разбираться не будите, сам запутался, объясню что надо: умная таблица с вертикальным...

Осуществить копирование диапазонов ячеек
Здравствуйте!) У меня есть макрос, который копирует определенный диапазоны ячеек. Но при запуске...

9
3388 / 2084 / 685
Регистрация: 02.11.2012
Сообщений: 5,453
05.04.2015, 09:41 2
по моему циклы на оборот нужно. Берем первое значение столбца С и сверяем его со всеми значениями столбца А, если не находим добавляем в массив или сразу в некую ячейку, далее берем следующее значение столбца С и т.д.
1
15019 / 6347 / 1725
Регистрация: 24.09.2011
Сообщений: 9,976
05.04.2015, 12:20 3
Лучший ответ Сообщение было отмечено RomSam как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub RomSam()
Dim r1 As Range, r2 As Range, x, n&
Set r1 = Range("A1:B3") 'диапазоны могут состоять более чем из одной строки и столбца
Set r2 = Range("C1:C5")
ReDim diff(1 To r1.Count + r2.Count)
For Each x In r1.Value
  If WorksheetFunction.CountIf(r2, x) = 0 Then n = n + 1: diff(n) = x
Next
For Each x In r2.Value
  If WorksheetFunction.CountIf(r1, x) = 0 Then n = n + 1: diff(n) = x
Next
'вывод в ст. F
Range("F1").Resize(n).Value = WorksheetFunction.Transpose(diff)
End Sub
1
3 / 3 / 3
Регистрация: 11.06.2013
Сообщений: 38
05.04.2015, 13:07  [ТС] 4
Спасибо большое работает, буду разбираться дальше с кодом)
0
6823 / 2765 / 520
Регистрация: 19.10.2012
Сообщений: 8,432
05.04.2015, 23:08 5
CountIf бывает косячит - но т.к. файл Вы не показываете, то можно и предложить такой вариант, скорее всего Вам повезёт
0
0 / 0 / 0
Регистрация: 14.07.2017
Сообщений: 3
14.07.2017, 05:46 6
Добрый день.

Пытаюсь применить данный макрос, при запуске вылетает сообщение о неправильном синтаксисе на функции If.
Помогите плиз неучу.


Sub RomSam()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim r1 As Range, r2 As Range, x, n&
Set r1 = Range("A2:A1284") 'диапазоны могут состоять более чем из одной строки и столбца
Set r2 = Range("B2:B682")
ReDim diff(1 To r1.Count + r2.Count)
For Each x In r1.Value
* If WorksheetFunction.CountIf(r2, x) = 0 Then n = n + 1: diff(n) = x
Next
For Each x In r2.Value
* If WorksheetFunction.CountIf(r1, x) = 0 Then n = n + 1: diff(n) = x
Next

'вывод в ст. F
Range("F1").Resize(n).Value = WorksheetFunction.Transpose(diff)

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub
0
3388 / 2084 / 685
Регистрация: 02.11.2012
Сообщений: 5,453
14.07.2017, 09:01 7
Zav54, что за * перед IF?
макрос должен работать. что то в вашем файле. Показываем файл с ошибкой.
0
0 / 0 / 0
Регистрация: 14.07.2017
Сообщений: 3
14.07.2017, 12:34 8
Торговля 2.zip

Вот. Пришлось заархивировать, так не грузился.
0
26 / 26 / 8
Регистрация: 12.04.2015
Сообщений: 75
14.07.2017, 13:36 9
Если я вас правильно понял то вот ....

Торговля 2.rar
0
0 / 0 / 0
Регистрация: 14.07.2017
Сообщений: 3
17.07.2017, 12:39 10
Спасибо, большое! Именно то, что нужно. Честно говоря, не ждал ответа, да еще такого оперативного. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2017, 12:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Заполнение диапазонов ячеек MS Excel
1. Создать макрос для рабочей книги MS Excel, позволяющий формировать значения в диапазонах ячеек ...

Объединение диапазонов ячеек с одинаковыми значениями
Добрый день товарищи. прошу помощи с решением следующей задачи: есть колонка с объединенными...

Сравнение двух диапазонов на несовпадение
Подскажите пожалуйста, как организовать поиск на несовпадение? На первом листе таблицу надо...

Сравнение диапазонов на НЕ полное совпадение
Здравствуйте! Мне требуется помощь в сравнении двух диапазонов. Находятся диапазоны на...

Сравнение двух диапазонов по последней строке
Здравствуйте, Проблема такова. Необходимо сравнить значения в последних строках двух диапазонов,...

Сравнение диапазонов и заливка совпавших записей
Проблема в следующем: На листе1 книги имеется несколько блоков с данными (Дата, фамилия, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.