我有一个数据集,有四列,第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
答案 0 :(得分:0)
假设您的示例位于:
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$2:$C$6=A2)*1),A2,"")
对于B栏中的评级,例如前面的公式在A9中,请使用B9
=IFERROR(INDEX(B$1:B$6,MATCH($A9,A$1:A$6,0)),"")
在C9中
=IFERROR(INDEX(D$1:D$6,MATCH($A9,C$1:C$6,0)),"")
最后获取数据之间的空白行。
希望它有效!
答案 1 :(得分:0)
假设第一个名称在A1中,将此公式放在E2中,
=COUNTIF(C:C, A2)
根据需要填写。选择A1,然后选择数据►排序&amp;过滤器►过滤( Ctrl + Shift + L )并过滤E列 0 ( 0 < / em>的)。清除A列和B列中所有可见单元格的值,然后删除过滤器。
将E2中的公式更改为,
=COUNTIF(A:A, C2)
根据需要填写。选择A1,然后选择数据►排序&amp;过滤器►过滤( Ctrl + Shift + L )并过滤E列 0 ( 0 < / em>的)。清除C列和D列中所有可见单元格的值,然后删除过滤器。
选择列A&amp; B然后数据►排序&amp;过滤器►对列A上的数据进行排序。如果要求展开选择,请不要展开选择。
选择列C&amp; D然后数据►排序&amp;过滤器►对列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