我有一张包含两列的电子表格,一个名称和一个值。名称重复多次,但值不同,例如:
姓名 - 1
姓名 - 2
姓名 - 3
ETC。
我正在寻找一个公式,该公式将遍历电子表格并删除名称列的所有重复实例,并保存具有第二高值的实例。因此,如果我输入像上面这样的电子表格,它将保存行“名称 - 2”并删除其他行。这可能吗?
编辑:电子表格有 6000 多个值,所以我更喜欢尽可能自动化的解决方案。我在想类似的事情:
- 按名称对值进行排序,然后按值对值进行排序。
- 删除具有最低值的重复行的公式。
- 公式删除除最低值以外的所有行。
答案1
您可以使用辅助列和过滤器来获得您想要的内容。
步骤 1:辅助列
使用以下公式向您的表中添加一列,其中名称在 中A2:A18
,值在 中B2:B18
。
=OR(COUNTIF($A$2:$A$18,A2)=1,SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1)
此公式将返回TRUE
您想要保留的行,即具有重复名称的第二高值以及任何非重复名称(如d
下面的示例所示)。如果您碰巧不想保留非重复的行,则可以使用以下公式。
=SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1
第 2 步:过滤
只需对整个表进行过滤,找出TRUE
辅助列中的行即可。
如果过滤还不够,而您确实需要删除其他数据,您可以将过滤结果复制并粘贴到另一个表中,然后在删除原始表后粘贴干净的副本。
答案2
我同意您应该按名称和值排序;我同意 Excellll 的方法很好。但是,如果您的数据包含名称最高值的并列,他的答案将失败;我在此改编(建立在该答案之上):
定义二辅助列:
C2
-=(A2<>A3)
D2
-=IF(A1=A2, B1, B2)
Column C
标识名称最后一次出现的行,Column D
获取第二高的值(如果仅出现一次,则获取唯一的值)。然后筛选出 Column 包含 的行 C
,FALSE
并将 Column 中的名称 A
与 Column 中的值 配对D
。请注意,以下示例使用的数据与 Excellll 的答案相同,只是前两个b
都是 17。我使用了条件格式来突出显示A
和 的 D
数据。C
TRUE
答案3
另一种选择是,创建一个具有唯一名称值的列表此选项然后使用LARGE
公式作为数组公式,如下所示:
=LARGE(IF($A$2:$A$20=D2;$B$2:$B$20);2)
..IF($A$2:$A$20=D2;$B$2:$B$20)...
If match condition, then give me the values. In my examples it could be
something like {1,2,...,6,FALSE,...FALSE} and the formula omits FALSE
values.
=LARGE(..., ??) [??] Rank Value you want in this case 2
转换为数组公式,写入后,单击F2
编辑,Ctrl+Shift+Enter
然后公式将得到如下内容:{=LARGE(...)}
这张表可能像这。