Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 19
1

Сравнение двух столбцов

24.07.2018, 14:42. Показов 4811. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем дня. Нужна помощь.

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

Есть вот такой код, но он не работает как нужно, а сравнивает только находящиеся друг напротив друга значения. Подскажите, пожалуйста, как его улучшить.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
Private Sub CommandButton1_Click()
Dim Number1 As String, Number2 As String
Dim i As Long
 
For i = 2 To 16
    Number1 = Cells(i, 1)
    Number2 = Cells(i, 2)
                If Number1 = Number2 Then
                    Cells(i, 3) = "+"
                Else
                    Cells(i, 3) = "-"
                End If
Next i
      
End Sub
Миниатюры
Сравнение двух столбцов  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2018, 14:42
Ответы с готовыми решениями:

Сравнение двух столбцов
Здравствуйте форумчане, подскажите как сделать сравнение следующим образом: В столбце А есть...

Сравнение столбцов в двух файлах
Доброго времени суток, задача следующая: есть шаблонный файл с большим количеством элементов и...

Макрос на сравнение двух столбцов
Всем добрый вечер. Помогите пожалуйста с макросом на сравнение двух столбцов, после чего он находит...

Сравнение двух столбцов из разных файлов
Доброго времени суток! Не геракл в VBA, но возникла такая потребность: Есть 2 абсолютно...

17
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
24.07.2018, 14:51 2
обязательно макрос, ф-ция не подойдет?
Код
=ЕСЛИ(СЧЁТЕСЛИ($A$1:$A$20;B1);"+";"")
0
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 19
24.07.2018, 14:53  [ТС] 3
Это просто пример. "Настоящих" значений, которые нужно обсчитать - несколько тысяч. Лучше макрос.
0
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
24.07.2018, 15:24 4
GreenMan, за последнее время на форуме такие аналогичные темы, в первой отмечаются не совпавшие - малость изменить.
Сравнить два столбца с разных листов и вывести несовпадения на отдельный лист
Сравнение строк
0
1 / 1 / 0
Регистрация: 08.09.2017
Сообщений: 391
24.07.2018, 15:40 5
Можно же макросом функцию вставлять через FormulaR1C1,ориентируясь по последней строке.То же самое же будет.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.07.2018, 16:29 6
Цитата Сообщение от Baykal555 Посмотреть сообщение
То же самое же будет
- только намноооого дольше... чем нормальный макрос. Но на несколько тысяч всё равно. На несколько сотен тысяч - разницу увидите.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
24.07.2018, 17:20 7
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'::: N1 - длина столбца 1
'::: N2 - длина столбца 2
 
 For i& = 2 To N1&
      Number1& = Cells(i&, 1).value
      For j&=2 to N2&
           Number2& = Cells(j&, 2).Value
           If Number1& = Number2& Then
              Cells(i&, 3).value = "+"
           Else
              Cells(i&, 3).Value = "-"
           End If
      Next j&
Next i&
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.07.2018, 17:25 8
Catstail, так ведь толку не будет...
Первое несоответствие - ставим -
...
Первое соответствие - ставим +
...
Очередное несоответствие - ставим -
...
Нужно сразу после + выходить из цикла.
А вообще это на коллекциях или словарях делают, чтоб быстро было. Скорее всего по ссылкам выше такое есть, не смотрел.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
24.07.2018, 17:27 9
Hugo121, а, ну да, конечно:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'::: N1 - длина столбца 1
'::: N2 - длина столбца 2
 
 For i& = 2 To N1&
      Number1& = Cells(i&, 1).value
      For j&=2 to N2&
           Number2& = Cells(j&, 2).Value
           If Number1& = Number2& Then
              Cells(i&, 3).value = "+"
              Exit For
           End If
      Next j&
      if Cells(i&, 3).value=" " then Cells(i&, 3).value="-"
Next i&
0
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 16
24.07.2018, 18:13 10
Цитата Сообщение от Catstail Посмотреть сообщение
Hugo121, а, ну да, конечно:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
'::: N1 - длина столбца 1
'::: N2 - длина столбца 2
For i& = 2 To N1&
 Number1& = Cells(i&, 1).value
 For j&=2 to N2&
 Number2& = Cells(j&, 2).Value
 If Number1& = Number2& Then
 Cells(i&, 3).value = "+"
 Exit For
 End If
 Next j&
 if Cells(i&, 3).value=" " then Cells(i&, 3).value="-"
Next i&
Я бы не сказал что код работает корректно, некоторые значения он просто пропускает и ничего там не ставит, а где надо поставить "-" стоит просто пропуск
Миниатюры
Сравнение двух столбцов  
0
Vlad999
24.07.2018, 18:15
  #11

Не по теме:

Hilk, и зачем весть пост цитировать?

0
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 16
24.07.2018, 18:21 12
Vlad999, почему нет...
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
24.07.2018, 18:24 13
Проверенный код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
 For i& = 2 To N1&
      Number1& = Cells(i&, 1).Value
      For j& = 2 To N2&
           Number2& = Cells(j&, 2).Value
           If Number1& = Number2& Then
              Cells(i&, 3).Value = "+"
              Exit For
           End If
      Next j&
      If Cells(i&, 3).Value = "" Then Cells(i&, 3).Value = "-"
 Next i&
0
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 16
24.07.2018, 18:37 14
Catstail, на скриншоте видно, что он выходит за границу 'j' и идёт дальше, проставляет в ячейки '+' значениям которых нет в первом столбце и ставит '-' ячейкам, которые есть
Миниатюры
Сравнение двух столбцов  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
24.07.2018, 19:43 15
Лучший ответ Сообщение было отмечено GreenMan как решение

Решение

Hilk, код берет ячейку из первого столбца и проверяет, есть ли такое значение во втором (на любом месте). Если есть - в третью колонку ставится плюс, если нет - то минус. Что не так?

Добавлено через 6 минут
А... Нужно наоборот. Тогда так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
 For i& = 2 To N2&
      Number2& = Cells(i&, 2).Value
      Cells(i&, 3).Value = "" '::: чтобы можно выло запускать несколько раз
      For j& = 2 To N1&
           Number1& = Cells(j&, 1).Value
           If Number1& = Number2& Then
              Cells(i&, 3).Value = "+"
              Exit For
           End If
      Next j&
      If Cells(i&, 3).Value = "" Then Cells(i&, 3).Value = "-"
 Next i&
1
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 19
24.07.2018, 20:20  [ТС] 16
Catstail, спасибо большое, то что нужно.
0
Vlad999
25.07.2018, 08:14
  #17

Не по теме:

Цитата Сообщение от Hilk Посмотреть сообщение
почему нет...
правило 5.17 форума.

0
0 / 0 / 0
Регистрация: 24.05.2017
Сообщений: 16
25.07.2018, 18:03 18
Vlad999, если вы считаете цитату с кодом избыточной (хотя цитата мне нужна была, чтобы показать, что программа не работала в условиях, которые были заданы объяснением), то это проблема "самих вас", вы сами определили, что цитирование избыточно, а по мне так не избыточно и что делать будем?
0
25.07.2018, 18:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2018, 18:03
Помогаю со студенческими работами здесь

Сравнение двух столбцов и удаление неравных
Приветствую! Помогите пожалуйста, сижу в ручную убираю строки, потом подумала, что можно это...

Сравнение двух столбцов в разных файлах
добрый день есть два файла экселя каждый из 5 столбцов Наименование столбцов одинаковые но...

Сравнение двух столбцов из разных книг
Здравствуйте глубокоуважаемые... Нужна помощь в написании VBA скрипта... Вообщем есть 2 книги...

Сравнение двух столбцов по нескольким критериям
Добрый день. Очень надеюсь на Вашу помощь. Есть два диапазона данных (эти данные могут быть как...

Сравнение и распределение двух столбцов на разных листах
Всем привет! Задача довольно банальна: сравнить столбец "Идентификационный номер (2)" на 2-м листе...

Сравнение двух столбцов в Excel и вывод несовпавших данных
Добрый день, Помогите, пожалуйста, составить макрос: имеется лист со столбцами A и B. В...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru