Автоматическое копирование уникальных значений столбцов - PullRequest
0 голосов
/ 01 ноября 2019

Я сейчас ищу в интернете, но не могу найти нужную информацию, поэтому надеюсь, что вы, ребята, сможете мне помочь.

В столбце B на листе 1 у меня есть следующая информация:

https://ibb.co/LvqvkSy

Как вы можете видеть, у меня есть несколько раз 1-11-2019 и следующий будет 2-11-2019. На листе 2 я хочу в столбце A 1 раз 1-11-2019 и ниже, прямо без пробела 2-11-2019.

Пример:

Currently:
1-11-2019
1-11-2019
1-11-2019
1-11-2019
1-11-2019
2-11-2019

And it needs to be:
1-11-2019
2-11-2019 
(In other sheet without blanks)

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

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Чтобы сделать его «автоматическим», вы можете использовать формулу. Убедитесь, что ссылки на диапазоны в формуле несколько больше, чем размер таблицы дат, и измените ссылку на лист в соответствии с

=IFERROR(AGGREGATE(15,6,1/(Sheet9!$A2:$A100<>Sheet9!$A3:$A101)*Sheet9!$A2:$A100,ROWS($1:1)),"")

. Убедитесь, что диапазоны имеют одинаковый размер и что даты отсортированы,мы возвращаем ошибку DIV/0, если только проверяемая дата не совпадает с датой в следующей строке. Если это так, мы возвращаем дату, используя функцию AGGREGATE, чтобы игнорировать ошибки.

enter image description here

enter image description here

0 голосов
/ 01 ноября 2019

Больше дорог в Рим на этом, но вы можете попробовать:

Sub RemDups()

Dim lr As Long
Dim arr As Variant

With Sheet1 'Change according to your sheet's codename
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr = .Range("B1:B" & lr)
End With

With Sheet2 'Change according to your sheet's codename
    .Range("A1:A" & lr).Value = arr
    .Range("A1:A" & lr).RemoveDuplicates Columns:=Array(1), Header:=xlGuess
    .Range("A1:A" & lr).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlShiftUp
End With

End Sub
...