如何比较两列名称及其评级,只保留常用名称及其评级?
How to compare two columns with names and their ratings and only keep the common names with their ratings?
我有一个包含四列的数据集,第 1 列包含条目名称,第 2 列包含这些条目的评分。第 3 列和第 4 列还包含条目名称及其评级。我想比较第 1 列和第 3 列,只保留公共条目名称并删除每列中未出现在另一列中的条目名称。因此,在下面的示例中,应删除“4x09-DH09”、“4x09-DH035”和“4x09-DH060”及其评级。我在 Excel 中找到了一个公式,该公式将两列与名称进行比较,并且只保留常用名称,但我不知道如何同时删除单独列中的评分?有任何想法吗?
提前致谢!!!
name rating name rating
4X09-DH03 2 4X09-DH03 2
4X09-DH09 2 4X09-DH011 2
4X09-DH011 5 4X09-DH012 5
4X09-DH035 2 4X09-DH055 2
4X09-DH055 2 4X09-DH060 2
假设您的示例位于:
A B C D
1 name rating name rating
2 4X09-DH03 2 4X09-DH03 2
3 4X09-DH09 2 4X09-DH011 2
4 4X09-DH011 5 4X09-DH012 5
5 4X09-DH035 2 4X09-DH055 2
6 4X09-DH055 2 4X09-DH060 2
为了仅使用公共元素复制第一列,尝试使用
=IF(SUMPRODUCT(($C:$C=A2)*1),A2,"")
对于B列的评分,假设前面的公式在A9中,在B9中使用
=IFERROR(INDEX(B:B,MATCH($A9,A:A,0)),"")
在 C9 中
=IFERROR(INDEX(D:D,MATCH($A9,C:C,0)),"")
去掉末尾数据之间的空行。
希望有用!
假设第一个name在A1,把这个公式放在E2,
=COUNTIF(C:C, A2)
根据需要填写。 Select A1 然后选择数据 ► 排序和筛选 ► 筛选 (Ctrl+Shift+L) 并为 0 (zero) 筛选 E 列。清除 A 列和 B 列中所有可见单元格的值并删除过滤器。
将E2中的公式改为,
=COUNTIF(A:A, C2)
根据需要填写。 Select A1 然后选择数据 ► 排序和筛选 ► 筛选 (Ctrl+Shift+L) 并为 0 (zero) 筛选 E 列。清除 C 列和 D 列中所有可见单元格的值并删除过滤器。
Select A 列和 B 列,然后数据 ► 排序和筛选 ► 对 A 列的数据进行排序。如果要求扩展选择,请不要扩展选择。
Select C 和 D 列,然后数据 ► 排序和筛选 ► 对 A 列的数据进行排序。如果要求扩展选择,请不要扩展选择。
你应该得到类似下面的结果。
虽然您的原始问题考虑了 Excel 中的 公式,该公式比较两列 并且未标记 excel-vba, 这是宏等价物。
Sub mcr_Murder_Orphans()
ActiveSheet.Cells(1, 5) = "helper"
With ActiveSheet.Cells(1, 1).CurrentRegion
.Cells(2, 5).Resize(.Rows.Count - 1, 1).formula = "=COUNTIF(C:C, A2)"
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=0"
.Columns("A:B").Offset(1, 0).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter
.Columns("A:B").Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Cells(2, 5).Resize(.Rows.Count - 1, 1).formula = "=COUNTIF(A:A, C2)"
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=0"
.Columns("C:D").Offset(1, 0).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter
.Columns("C:D").Cells.Sort Key1:=.Columns(3), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Columns(5).EntireColumn.Delete
End With
End Sub
我有一个包含四列的数据集,第 1 列包含条目名称,第 2 列包含这些条目的评分。第 3 列和第 4 列还包含条目名称及其评级。我想比较第 1 列和第 3 列,只保留公共条目名称并删除每列中未出现在另一列中的条目名称。因此,在下面的示例中,应删除“4x09-DH09”、“4x09-DH035”和“4x09-DH060”及其评级。我在 Excel 中找到了一个公式,该公式将两列与名称进行比较,并且只保留常用名称,但我不知道如何同时删除单独列中的评分?有任何想法吗? 提前致谢!!!
name rating name rating
4X09-DH03 2 4X09-DH03 2
4X09-DH09 2 4X09-DH011 2
4X09-DH011 5 4X09-DH012 5
4X09-DH035 2 4X09-DH055 2
4X09-DH055 2 4X09-DH060 2
假设您的示例位于:
A B C D
1 name rating name rating
2 4X09-DH03 2 4X09-DH03 2
3 4X09-DH09 2 4X09-DH011 2
4 4X09-DH011 5 4X09-DH012 5
5 4X09-DH035 2 4X09-DH055 2
6 4X09-DH055 2 4X09-DH060 2
为了仅使用公共元素复制第一列,尝试使用
=IF(SUMPRODUCT(($C:$C=A2)*1),A2,"")
对于B列的评分,假设前面的公式在A9中,在B9中使用
=IFERROR(INDEX(B:B,MATCH($A9,A:A,0)),"")
在 C9 中
=IFERROR(INDEX(D:D,MATCH($A9,C:C,0)),"")
去掉末尾数据之间的空行。
希望有用!
假设第一个name在A1,把这个公式放在E2,
=COUNTIF(C:C, A2)
根据需要填写。 Select A1 然后选择数据 ► 排序和筛选 ► 筛选 (Ctrl+Shift+L) 并为 0 (zero) 筛选 E 列。清除 A 列和 B 列中所有可见单元格的值并删除过滤器。
将E2中的公式改为,
=COUNTIF(A:A, C2)
根据需要填写。 Select A1 然后选择数据 ► 排序和筛选 ► 筛选 (Ctrl+Shift+L) 并为 0 (zero) 筛选 E 列。清除 C 列和 D 列中所有可见单元格的值并删除过滤器。
Select A 列和 B 列,然后数据 ► 排序和筛选 ► 对 A 列的数据进行排序。如果要求扩展选择,请不要扩展选择。
Select C 和 D 列,然后数据 ► 排序和筛选 ► 对 A 列的数据进行排序。如果要求扩展选择,请不要扩展选择。
你应该得到类似下面的结果。
虽然您的原始问题考虑了 Excel 中的 公式,该公式比较两列 并且未标记 excel-vba, 这是宏等价物。
Sub mcr_Murder_Orphans()
ActiveSheet.Cells(1, 5) = "helper"
With ActiveSheet.Cells(1, 1).CurrentRegion
.Cells(2, 5).Resize(.Rows.Count - 1, 1).formula = "=COUNTIF(C:C, A2)"
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=0"
.Columns("A:B").Offset(1, 0).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter
.Columns("A:B").Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Cells(2, 5).Resize(.Rows.Count - 1, 1).formula = "=COUNTIF(A:A, C2)"
.AutoFilter
.AutoFilter Field:=5, Criteria1:="=0"
.Columns("C:D").Offset(1, 0).SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter
.Columns("C:D").Cells.Sort Key1:=.Columns(3), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Columns(5).EntireColumn.Delete
End With
End Sub