Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
1

Удаление дубликатов в столбцах (только по вертикали)

25.01.2021, 10:19. Показов 1888. Ответов 11

Author24 — интернет-сервис помощи студентам
добрый день. помогите, пож, доработать макрос, или может кто-то сможет подсказать другой макрос.
задача: 5 столбцов в excel. 100 строк.
нужно, чтобы при выделении диапазона макрос удалял все дубликаты в столбце А, к примеру, все буквы Ю в столбце А должны быть удалены за исключением одной. НО. в столбце B эта буква Ю должна остаться. то есть, должно остаться по одной букве Ю в каждом столбце.
сейчас макрос удаляет по горизонтали. если нашел букву Ю в первом столбце - то сносит дубликаты и во всех остальных столбцах.

вот макрос. помогите, пожалуйста)

Option Explicit

Sub Udalenie_Dublikatov_Znachenij()

Dim iCount As Long, i As Long, j As Long, k As Long

Dim Str1 As String, Str2 As String

k = 1

iCount = Selection.Cells.Count

For i = k To iCount

Str1 = CStr(Selection.Cells(i).Value)

If Str1 <> "" Then

For j = i To iCount

Str2 = CStr(Selection.Cells(j).Value)

If i <> j And Str1 = Str2 Then Selection.Cells(j).ClearContents

Next j

End If

Next i

End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2021, 10:19
Ответы с готовыми решениями:

Поиск дубликатов в связанных столбцах
есть таблица parse в ней два поля idGroup и idPost оба числовые могут быть отрицательные. Скажите...

Задача по поиску дубликатов в столбцах
Есть три столбца &quot;Агенты&quot;, &quot;Потребители&quot;, Проекты&quot; Цель: Необходимо проследить количество повторов...

Удаление дубликатов + ассинхронное удаление из другой таблицы
Есть две таблицы tbl_content : id, title tbl_pics : id, picname 1. Нужно удалить дубликаты...

Удаление дубликатов
скажите пожалуйста , как это работает вообще Const n=8000000; Var a,b:array of integer; ...

11
237 / 148 / 41
Регистрация: 26.01.2019
Сообщений: 545
25.01.2021, 10:29 2
Цитата Сообщение от sayka Посмотреть сообщение
5 столбцов в excel. 100 строк
Траволту в студию! =)
Цитата Сообщение от sayka Посмотреть сообщение
при выделении диапазона макрос удалял все дубликаты в столбце А
А чем штатная функция не устроила?
Данные - Работа с данными - Удалить дубликаты
Изображения
 
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 10:40  [ТС] 3
оо... я что только сегодня не пыталась. перечитала половину рунета. пока - бесполезно. моих мозгов явно не хватает.

по поводу штатной - не то немного. мне нужно сразу выделить диапазон и удалить дубликаты. штатная удаляем опять же по горизонтали (или как это правильно называется), если выделен весь диапазон. и сметает то, что сметаться не должно.

вся беда в столбцах D и E.
мне нужно, чтобы повторяющаяся ячейка "МОСКВА ГОРОД, ПОСЕЛЕНИЕ СОСЕНСКОЕ" по одному разу осталась ив в D, и в E
Миниатюры
Удаление дубликатов в столбцах (только по вертикали)  
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 10:45  [ТС] 4
вообще, в идеале, конечно,нужен макрос, который бы в выделенном диапазоне удалял сначала дубликаты в столбцах по вертикали, а потом объединял ячейки в столбцах по вертикали в одну.
но это - уж прям совсем в идеале.

пока нашла 2 макроса - один удаляет, другой - объединяет.
но вот с удалением как раз и проблема, по причине которой открыла тему....
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
25.01.2021, 11:58 5
sayka,
у вас же вся таблица съедет....
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 11:59  [ТС] 6
нет.только значения удаляются, строки остаются. а столбцы я потом по вертикали напротив каждой компании объединяю. мне бы макрос вот..
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
25.01.2021, 15:18 7
Лучший ответ Сообщение было отмечено sayka как решение

Решение

sayka,
Цитата Сообщение от sayka Посмотреть сообщение
мне бы макрос вот
потом объединял ячейки в столбцах по вертикали в одну.
но это - уж прям совсем в идеале.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub MMM()
Application.DisplayAlerts = False
With Selection
           For j = 1 To .Columns.Count
                    m = 1
                    For i = m To .Rows.Count
                                    If .Cells(i, j).Value <> .Cells(m, j).Value Then
                                                      If i - m > 1 Then
                                                            Range(.Cells(m, j), .Cells(i - 1, j)).Merge
                                                            m = i
                                                       End If
                                    End If
                                   If i = .Rows.Count Then
                                                 If i - m > 1 Then Range(.Cells(m, j), .Cells(i, j)).Merge
                                  End If
                    Next
        Next
End With
Application.DisplayAlerts = True
End Sub
1
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 16:34  [ТС] 8
спасибо огромное!!
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 17:01  [ТС] 9
подскажите, пож, а почему макрос не работает, когда в двух смежных строках его используешь? при вызове макроса тогда ничего не происходит
Миниатюры
Удаление дубликатов в столбцах (только по вертикали)  
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
25.01.2021, 17:03 10
sayka,
минимум 3 строки
0
0 / 0 / 0
Регистрация: 25.01.2021
Сообщений: 8
25.01.2021, 17:04  [ТС] 11
подскажите, пожалуйста, а какое значение нужно изменить, чтобы минимально было - 2 строки? это возможно?
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
26.01.2021, 23:03 12
sayka,
Цитата Сообщение от sayka Посмотреть сообщение
тобы минимально было - 2 строки? это возможно?
Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub VVV()
Application.DisplayAlerts = False
With Selection
If .Rows.Count = 2 Then
For j = 1 To .Columns.Count
      
         If .Cells(1, j).Value = .Cells(2, j).Value Then
            If .Cells(1, j).Value <> 0 And .Cells(2, j).Value <> 0 Then
              Range(.Cells(1, j), .Cells(2, j)).Merge
            End If
         End If
Next
Exit Sub
End If
    For j = 1 To .Columns.Count
       M = 1
       For i = M To .Rows.Count
         
       If Not IsEmpty(.Cells(M, j)) Then
             If i = .Rows.Count Then
                 Range(.Cells(M, j), .Cells(i, j)).Merge
             Else
                 If .Cells(i, j).Value <> .Cells(M, j).Value Then
                     Range(.Cells(M, j), .Cells(i - 1, j)).Merge
                     M = i
                 End If
             End If
             
         End If
       Next
    Next
End With
Application.DisplayAlerts = True
End Sub
0
26.01.2021, 23:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2021, 23:03
Помогаю со студенческими работами здесь

Удаление дубликатов
namespace ConsoleApp3 { class Program { static void Main(string args) ...

Удаление дубликатов
Здравствуйте. В SQL-запросах, особо не силен. Прошу вашей помощи. Есть не маленькая база данных. В...

Удаление дубликатов
Есть таблица в DataGridview с 3 столбцами. Как сделать удаление повторяющихся строк(ячейки равны...

Удаление дубликатов
Вопрос, как удалить дубликаты в столбце. Интересует удаление и дубликатов, и оригиналов...

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный данные совпадают?

Удаление дубликатов
Всем привет Пробую зачистить строки от повторений Текст строк примерно такой...


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

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