如何通过匹配值对Excel中的多列进行排序

我正在做数据清理。我从多个 Excel 电子表格中收集了数据。我试图在完全匹配的基础上实现排序,即

**Original dataset**

FirstName_Store1  FirstName_Store2  FirstName_Store3
Aat               Cat               Dat
Cat               Bat               Zat
Cot
Eat

**Result intended**

FirstName_Store1  FirstName_Store2  FirstName_Store3
Aat                              
                  Bat              
Cat               Cat               
Cot
                                    Dat
Eat                              
                                    Zat

我想要结果的原因是因为我想找出要删除的记录。我想从 Store1 中删除不在 store2 和 store3 中的值。

原始数据集包含大约 4000 条记录。正常的字母排序不会与 Store2 和 Store3 并排显示来自 Store1 的确切列值。

到目前为止我尝试过的事情:Match function Match (Store1,Store2:Store3,0) 结果是一个错误。我也尝试过 Vlookup,但是,Vlookup 不进行排序。

用户4039065

就个人而言,我认为这是一个XY 问题,您正在尝试解决一个与您的实际问题几乎没有关系的问题。

我想要结果的原因是因为我想找出要删除的记录。我想从 Store1 中删除不在 store2 和 store3 中的值。

通过从下到上循环遍历FirstName_Store1中的每个单元格application.countif并对其余列执行 an 应该可以轻松解决这种情况

话虽如此,这是您实际提出的问题的一种解决方案。

sortAndSift 子程序之前的示例数据

在此处输入图片说明

公共模块代码表的 sortAndSift 代码

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

sortAndSift 子程序后的样本数据

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过匹配两个不同列中的值对行进行排序

如何在excel中的多列中索引和进行多个匹配?

如何根据散列中的值通过函数对散列进行排序

如何在Excel中按数据对列进行排序/排序

如何在熊猫中按顺序对多列进行排序

如何根据日期对SQL Server中的多列进行排序

如何对CSV文件中的多列进行排序

如何在Python中对多列进行排序?

Excel:如何按相同的列值对行进行排序

如何将df1中多列中的元素与R中array1中的值进行匹配?

R:通过匹配A列中的值进行子集

如何通过Javascript中的值对关联数组进行排序?

如何通过Lua中的值对表进行排序?

如何通过键中的值对Redis哈希进行排序

如何通过列表中的值对数据框进行排序

在Excel中对列进行排序

如何在Excel中匹配未排序的列

如何通过python中的两列对csv文件进行排序?

如何对多列进行排序:CSV?C ++

如何使用PrimeNG对多列进行排序

对 hql 中的多列进行排序

在R中对多列数据进行排序

如何在Excel中对3列数据进行排序

通过匹配多列中的条件进行过滤以从第三列返回文本

Excel中合并了如何对一个列数据进行排序并与具有某些单元格的另一列数据进行匹配的方法

如何对多列进行切片并对熊猫中的另一列进行排序

Django:如何编写查询以使用多列进行排序,并通过模板显示

如何索引Excel中多列中重复的精确值

通过匹配另一列对2列进行排序