Страницы: 1
RSS
Выделение столбцов по заданным параметрам и выведение их в соседний лист
 
Здравствуйте уважаемые форумчане. У меня возникла необходимость сравнивать два куска столбца на наличие в них не повторяющихся значений.
Как видно в примере есть некая временная таблица (лист "Исходные данные") с рядом номеров ,которые размещены в столбце "E". Есть ли возможность програмно реализовать следующее:
1) для начала необходим запрос на введение диапазона времени (в данном случае область выделенная желтым и период времени 7:00:00-15:00:00);
2) после введения временного интервала можно ли выделить (или вырезать) заданный интервал выделенный желтым и перенести на соседний лист ("Результат") в столбец например "А" и добавить рядом в столбец "В" остальную, не выделенную часть столбца "E" и подсветить через условное форматирование уникальные числа которые находились только в желтой области (как в примере)
3) возможно есть метод позволяющий делать такое "на лету" (с выводом конечного результата в лист "Результат" но это уже я зажрался наверно :))

Заранее благодарю. Всем добра :)
 
Цитата
написал:
Выделение столбцов по заданным параметрам и выведение их в соседний лист, Выделение по параметрам времени столбца с переносом на соседний лист и сравнением с оставшейся частью столбца
а зачем выделят? можно же просто вывести? или выделить нужно? - в описании как раз об этом написали...понял
Изменено: Mershik - 30.11.2021 14:02:56
Не бойтесь совершенства. Вам его не достичь.
 
Выделите диапазон, запустите макрос.
Код
Option Explicit

Sub aaa()
    Dim r As Range
    Set r = Selection
    Dim arr As Variant
    arr = r
    Dim brr As Variant
    brr = Range(Cells(2, r.Column), Cells(r.Row - 1, r.Column))
    Dim crr As Variant
    crr = Range(Cells(r.Row + r.Rows.Count, r.Column), Cells(Rows.Count, r.Column).End(xlUp))
    
    With Workbooks.Add(1)
        With .Sheets(1)
            With .Cells(1, 1).Resize(UBound(arr, 1), 1)
                .Value = arr
            End With
            With .Cells(1, 2).Resize(UBound(brr, 1), 1)
                .Value = brr
            End With
            With .Cells(1 + UBound(brr, 1), 2).Resize(UBound(crr, 1), 1)
                .Value = crr
            End With
            
            Cells.FormatConditions.Delete
            ActiveSheet.UsedRange.Select
            Selection.FormatConditions.AddUniqueValues
            Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            Selection.FormatConditions(1).DupeUnique = xlUnique
            With Selection.FormatConditions(1).Font
                .Color = -16383844
                .TintAndShade = 0
            End With
            With Selection.FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = 13551615
                .TintAndShade = 0
            End With
            Selection.FormatConditions(1).StopIfTrue = False
        End With
    End With
End Sub

Изменено: МатросНаЗебре - 30.11.2021 14:12:17
 
Спасибо большое. Так даже лучше, когда результаты выводятся в новый лист. Меньше система зависает при больших объемах. Протестировал. Отличное решение :)
Страницы: 1
Наверх