我正在清理数据。我从多个Excel电子表格中收集了数据。 我正在尝试在完全匹配的基础上实现排序,即
number = 10
number2 = 20
while number > 0 and number2 > 0:
number = number - 1
number2 = number2 - 1
print(number)
我想要结果的原因是因为我想找出要删除的记录。我想从Store1中删除不在store2和store3中的值。
原始数据集包含约4000条记录。普通字母排序不会显示Store1与Store2和Store3并排的确切列值。
到目前为止我尝试过的事情: 匹配函数Match(Store1,Store2:Store3,0),结果为错误。 我也尝试了Vlookup,但是Vlookup不会进行排序。
答案 0 :(得分:1)
我个人认为,这是XY Problem,您正在尝试解决与实际问题无关的问题。
我想要结果的原因是因为我想找出要删除的记录。我想从Store1中删除不在store2和store3中的值。
应通过从底部到顶部循环遍历 FirstName_Store1 列中的每个单元格并在其余列上执行application.countif
来轻松解决这种情况。
话虽如此,这是您实际提出的问题的一种解决方案。
Sample data before sortAndSift sub procedure
sortAndSift code for public module code sheet
Option Explicit
Sub sortAndSift()
Dim i As Long, j As Long, m As Variant, n As Variant
With Worksheets("sheet6")
With .Cells(1, 1).CurrentRegion
With .Cells.Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
'store the original values
m = .Value2
End With
'put all values into column A
For i = 2 To .Columns.Count
With .Range(.Cells(2, i), .Cells(Rows.Count, i).End(xlUp))
.Parent.Cells(.Parent.Rows.Count, 1).End(xlUp).Resize(.Rows.Count, .Columns.Count).Offset(1, 0) = .Value
End With
Next i
End With
'reassert CurrentRegion since it probably changed
With .Cells(1, 1).CurrentRegion
With .Columns(1).Cells
'remove duplicates from column A
.RemoveDuplicates Columns:=1, Header:=xlYes
'sort column A
.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
'put a copy of the expanded, de-duplicated and sorted column A
' in all other columns and make a copy of the values
With .Cells.Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
.FillRight
n = .Value2
End With
'remove values from each 'column' in the array that were not in the original
For i = LBound(n, 1) To UBound(n, 1)
For j = LBound(n, 2) To UBound(n, 2)
If IsError(Application.Match(n(i, j), Application.Index(m, 0, j), 0)) Then
n(i, j) = vbNullString
End If
Next j
Next i
End With
'put values back on the worksheet
.Cells(2, 1).Resize(UBound(n, 1), UBound(n, 2)) = n
End With
End Sub
答案 1 :(得分:0)
通过将数据放入数据透视表中,可以轻松创建唯一列表( how 虽然对SO ref而言似乎不是主题)。例如,结果可能是“复制/粘贴特殊值/值”,“应用删除的重复项”,按字母顺序排序然后放在ColumnE中。
然后在F2中将其复制并向下复制到H8:
=IFERROR(IF(MATCH($E2,A:A,0),$E2),"")
复制标题。
假设Aat
在A2中。