Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
7 / 7 / 6
Регистрация: 02.04.2012
Сообщений: 321

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

08.09.2016, 18:53. Показов 3191. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Имеется excel файл напечатанного ниже формата:
Столбец "A" - Имеющиеся артикула;
Столбец "B" - Артикула которых возможно нет;
Столбцы "С и до конца" - Дополнительная информация относящаяся к столбцу "B".

1. Напишите пожалуйста макрос который проверит наличие одинаковых значений между ячейками столбцов "A" и "B";
1.1. Если в ячейке столбца "B", нашлось значение равное значению ячейки столбца "A", - следует удалить строку Столбца "B", - содержащую это повторяющееся значение.

Пример файла во вложении, в нем представлена страница "Исходник" и страница "Необходимый результат".

Ниже печатаю пример, страницы исходник:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
2. [A] 111 [B] 111 [C] [D] [E] 555
3. [A] 222 [B] 222 [C] 2 [D] [E]
4. [A] 444 [B] 333 [C] 678 [D] [E]
5. [A] 555 [B] 666 [C] [D] [E]
6. [A] 666 [B] 999 [C] [D] [E] 991


Ниже печатаю пример, страницы необходимый результат:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
4. [A] 444 [B] 333 [C] 678 [D] [E]
6. [A] 666 [B] 999 [C] [D] [E] 991
Вложения
Тип файла: xlsx Пример.xlsx (9.0 Кб, 14 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2016, 18:53
Ответы с готовыми решениями:

Сравнение 3 столбцов по первому и удаление дублей
Всем здравствуйте.Уважаемые форумчане помогите реализовать данную задачу. Есть 3 столбца со значениями необходимо сравнить по первому ...

Макрос: сравнение двух столбцов с суммированием их значений и удаление дублей
Всем Доброго времени суток!!! Файл который необходимо адаптировать во вложении. Прошу подсказать с макросом------ Суть такова. 1)...

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

4
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
08.09.2016, 20:54
Лучший ответ Сообщение было отмечено MrRuslanBB как решение

Решение

Вариант с использованием словаря:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub DelReplyA()
    Dim c&(), rn As Range
    With ActiveSheet
        a = .UsedRange.Columns(1)
        b = .UsedRange.Columns(2)
        k = .UsedRange.Columns.Count + 1
    End With
    ReDim c(1 To UBound(b, 1), 1 To 1)
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a)
            .Item(a(i, 1)) = i
        Next
        For i = 2 To UBound(b)
            If .exists(b(i, 1)) Then c(i, 1) = 1
        Next
    End With
    Cells(1, k).Resize(UBound(c), 1) = c
    Set rn = Range(Cells(1, k), Cells(1, k))
    Columns(k).ColumnDifferences(rn).EntireRow.Delete
    Columns(k).Delete
End Sub
1
7 / 7 / 6
Регистрация: 02.04.2012
Сообщений: 321
13.09.2016, 15:55  [ТС]
Добрый день!

(1) Напишите пожалуйста макрос, который похож на макрос напечатанный выше, только:

1. Макрос так-же проверит наличие одинаковых значений между ячейками столбцов "A" и "B";
1.2. Если в ячейке столбца "A", нашлось значение равное значению ячейки столбца "B", - следует удалить строку Столбца "A" (со сдвигом вверх), - содержащую это повторяющееся значение.

Пример файла во вложении, в нем представлена страница "Исходник" и страница "Необходимый результат-2".

Ниже печатаю пример, страницы исходник:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
2. [A] 111 [B] 111 [C] [D] [E] 555
3. [A] 222 [B] 222 [C] 2 [D] [E]
4. [A] 444 [B] 333 [C] 678 [D] [E]
5. [A] 555 [B] 666 [C] [D] [E]
6. [A] 666 [B] 999 [C] [D] [E] 991


Ниже печатаю пример, страницы необходимый результат:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
2. [A] 444 [B] 333 [C] 678 [D] [E]
3. [A] 555 [B] 666 [C] [D] [E]

Для ясности:
444 и 555 - не встречаются одновременно в обоих столбцах "A" и "B", - то бишь их надо оставить.


(2) Ещё один макрос который похож на те, что напечатаны выше:

1. Макрос проверит наличие одинаковых значений между ячейками столбцов "A" и "B";
1.3. Если в ячейке столбца "B", нашлось значение равное значению ячейки столбца "A", - следует ОСТАВИТЬ те строки Столбца "B", - которые содержат это повторяющееся значение;
1.3.1. Все не повторяющиеся значения, следует удалить по столбцу "B".

Пример файла во вложении, в нем представлена страница "Исходник" и страница "Необходимый результат-3".


Ниже печатаю пример, страницы исходник:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
2. [A] 111 [B] 111 [C] [D] [E] 555
3. [A] 222 [B] 222 [C] 2 [D] [E]
4. [A] 444 [B] 333 [C] 678 [D] [E]
5. [A] 555 [B] 666 [C] [D] [E]
6. [A] 666 [B] 999 [C] [D] [E] 991


Ниже печатаю пример, страницы необходимый результат:
1. [A] Имеющиеся артикула [B] Артикула которых возможно нет [C] Дополнительная информация 1 [D] Дополнительная информация 2 [E] Дополнительная информация 3
2. [A] 111 [B] 111 [C] [D] [E] 555
3. [A] 222 [B] 222 [C] 2 [D] [E]
4. [A] 555 [B] 666 [C] [D] [E]

Для ясности:
111, 222, 333 - эти значения встречаются в стобцах A и B, - хотя строки оставленны по столбцу "B".
Вложения
Тип файла: xlsx Пример.xlsx (9.6 Кб, 7 просмотров)
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
13.09.2016, 16:19
Да, имея предыдущий код..., ну ладно держи:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub DelNoReplyB()
    Dim c&(), rn As Range
    With ActiveSheet
        a = .UsedRange.Columns(1)
        b = .UsedRange.Columns(2)
        k = .UsedRange.Columns.Count + 1
    End With
    ReDim c(1 To UBound(b, 1), 1 To 1)
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(b)
            .Item(b(i, 1)) = i
        Next
        For i = 2 To UBound(a)
            If Not .exists(a(i, 1)) Then c(i, 1) = 1
        Next
    End With
    Cells(1, k).Resize(UBound(c), 1) = c
    Set rn = Range(Cells(1, k), Cells(1, k))
    Columns(k).ColumnDifferences(rn).EntireRow.Delete
    Columns(k).Delete
End Sub
1
7 / 7 / 6
Регистрация: 02.04.2012
Сообщений: 321
14.09.2016, 11:16  [ТС]
toiai, благодарю за макросы.

Только последний написанный вами макрос удаляет НЕ ПОВТОРЯЮЩИЕСЯ ячейки столбца "A".

Необходимо, чтобы вычисления макросов сводились к удалению повторяющихся ячеек столбца "A" (то бишь удаление дублей);

Совсем немного изменил последний напечатанный вами макрос и получил результат который описывал здесь:
1. Макрос проверит наличие одинаковых значений между ячейками столбцов "A" и "B";
1.3. Если в ячейке столбца "B", нашлось значение равное значению ячейки столбца "A", - следует ОСТАВИТЬ те строки Столбца "B", - которые содержат это повторяющееся значение;
1.3.1. Все не повторяющиеся значения, следует удалить по столбцу "B".

Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub DelNoReplyB()
    Dim c&(), rn As Range
    With ActiveSheet
        a = .UsedRange.Columns(1)
        b = .UsedRange.Columns(2)
        k = .UsedRange.Columns.Count + 1
    End With
    ReDim c(1 To UBound(a, 1), 1 To 1)
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a)
            .Item(a(i, 1)) = i
        Next
        For i = 2 To UBound(b)
            If Not .exists(b(i, 1)) Then c(i, 1) = 1
        Next
    End With
    Cells(1, k).Resize(UBound(c), 1) = c
    Set rn = Range(Cells(1, k), Cells(1, k))
    Columns(k).ColumnDifferences(rn).EntireRow.Delete
    Columns(k).Delete
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2016, 11:16
Помогаю со студенческими работами здесь

Сравнение столбцов по содержимому и удаление несовпадающих элементов
как сделать как на картинке?

Сравнение 2 книг в Excel и копирование дублей в третью книгу
Доброго всем времени суток, нужна помощь!!!! Имеются 2 книги в Excel в которых необходимо сравнить стобцы 5,6,7 и 8 на полное совпадение, и...

Необходимо удаление/выделение дублей в таблице
Всем добрый день. Очень нужна помощь таких гуру программирования, как участники данного форума. Сразу прошу прощения, если...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru