自动复制唯一列值

时间:2019-11-01 09:36:41

标签: excel vba excel-formula excel-2010

我目前正在互联网上搜索,但是我找不到正确的信息,因此希望大家能为我提供帮助。

在工作表1的B列中,我具有以下信息:

https://ibb.co/LvqvkSy

如您所见,我有多次1-11-2019,下一次将是2-11-2019。在工作表2上,我想在A栏1 11:00至2019年11月及其下方直接插入空白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 :(得分:0)

在此道路上有更多通往罗马的道路,但您可以尝试:

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

答案 1 :(得分:0)

要使其成为“自动”,可以使用公式。 确保公式中的范围引用大于日期表的大小,然后将工作表引用更改为适合

=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