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

Удаление дубликатов при перемещении на другой лист

28.02.2017, 04:15. Показов 1385. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, есть макрос, который удаляет дубликаты и переносит их на другой лист, но нужно добавить еще одно условие, в столбце O идут разные услуги, нужно, чтобы макрос добавлял только те даты на другой лист, если в столбце O стоит услуга "Выезд".
Иначе даты дублируются, если в один день оказано больше одной услуги. Не могли бы, пожалуйста, поправить этот момент?
Вложения
Тип файла: xls 1595182.xls (54.0 Кб, 6 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2017, 04:15
Ответы с готовыми решениями:

Копирование информации без дубликатов на другой лист
В магазине имеется список лиц, записавшихся на покупку мебельного гарнитура. Каждая запись этого...

Копирование данных в один лист с удаление дубликатов и переносом их значений
Уважаемые знатоки VBA есть таблица учета выездов Мобильных ДГА и раз в месяц необходимо собрать...

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

Удаление дубликатов, при этом не сдвигая строки
Может у кого есть идеи? В столбце "А" содержатся повторяющиеся данные(числа). Задача удалить...

2
61 / 60 / 16
Регистрация: 13.02.2017
Сообщений: 172
28.02.2017, 08:46 2
Лучший ответ Сообщение было отмечено Asmona как решение

Решение

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Sub Объединить_дубликаты()
 
    Dim shSrc As Worksheet, shRes As Worksheet
    Dim arr(), lr As Long, i As Long
    
    Application.ScreenUpdating = False
    
    Set shSrc = ActiveSheet
    Set shRes = Worksheets.Add(After:=shSrc)
    shSrc.Columns("F:G").Copy shRes.Columns("A:B")
    shSrc.Columns("K:L").Copy shRes.Columns("C:D")
    shSrc.Columns("J").Copy shRes.Columns("E")
    shSrc.Columns("B").Copy shRes.Columns("F")
    shSrc.Columns("O").Copy shRes.Columns("G")
    
    rw = shRes.Range("G" & Rows.Count).End(xlUp).Row
    
    For i = 2 To rw
    If shRes.Range("G" & i) = "" Then Exit For
    If shRes.Range("G" & i) <> "Выезд" Then shRes.Rows(i).Delete Shift:=xlUp: i = i - 1
    Next i
    
    
    MergeAddress shRes
    shRes.Columns("D").Delete
    
    shRes.Sort.SortFields.Add Key:=shRes.Columns("A"), SortOn:=xlSortOnValues, Order:=xlAscending
    shRes.Sort.SortFields.Add Key:=shRes.Columns("B"), SortOn:=xlSortOnValues, Order:=xlAscending
    shRes.Sort.SortFields.Add Key:=shRes.Columns("E"), SortOn:=xlSortOnValues, Order:=xlAscending
    With shRes.Sort
        .SetRange shRes.Columns("A:E")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
    
    lr = shRes.Cells(shRes.Rows.Count, "A").End(xlUp).Row
    arr() = shRes.Range("A1:E" & lr).Value
    For i = UBound(arr) To 3 Step -1
        If arr(i, 1) = arr(i - 1, 1) And arr(i, 2) = arr(i - 1, 2) Then
            arr(i - 1, 3) = arr(i, 3)
            arr(i - 1, 4) = arr(i, 4)
            arr(i - 1, 5) = arr(i - 1, 5) & Chr(10) & arr(i, 5)
            arr(i, 1) = Empty
        End If
    Next i
    
    shRes.Range("A1:E" & lr).Value = arr()
    
    On Error Resume Next
    shRes.Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
    
    shRes.Columns("A:E").HorizontalAlignment = xlCenter
    shRes.Columns("A:E").VerticalAlignment = xlCenter
    
    Application.ScreenUpdating = True
 
End Sub
 
Private Sub MergeAddress(shRes As Worksheet)
 
    Dim arr1(), arr2(), lr As Long, i As Long
    
    lr = shRes.Columns("C:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
    arr1() = shRes.Range("C2:D" & lr).Value
    ReDim arr2(1 To UBound(arr1), 1 To 1)
    
    For i = 1 To UBound(arr1)
        arr2(i, 1) = arr1(i, 1) & ", " & arr1(i, 2)
    Next i
    shRes.Range("C2").Resize(UBound(arr2)).Value = arr2()
 
End Sub
1
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 19
28.02.2017, 09:15  [ТС] 3
smeckoi77, спасибо огромное, только в том макросе всегда переносились последние измененные данные, потому что клиент может переехать или изменится степень заболевания и прочее, потому последние, а не первые данные.
0
28.02.2017, 09:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2017, 09:15
Помогаю со студенческими работами здесь

Удаление одной записи при наличии дубликатов
Доброго времени суток! Делаю SQL запрос удаления записи в базе, однако одинаковых записей может...

Удаление строки, данные из которой были скопированы на другой лист
В приведенном ниже коде почему-то не удаляется строка данные из которой были скопированы на другой...

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

Перенос строки на другой лист, при выполнении 2 условий
Добрый день. Имеется лист общего списка сотрудников, необходимо, чтобы при выполнении условия...

Перенаправление на другой лист при нажатии на нужную ячейку
Задумка была следующая есть два листа в одном расчет по помещениям в другом сводная условно...

при переносе файлов на другой хостинг теперь вижу белый лист :(
Приветствую! С одного хостинга на другой перенес в отдельную папку php файлы, из phpmyadmin...


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

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