【问题标题】:Find and remove duplicate IDs and replace查找并删除重复的 ID 并替换
【发布时间】:2018-10-06 01:10:07
【问题描述】:

我有非常基本的用户 Excel 知识。我有一个电子表格,我可以在其中跟踪重新加载数据。我输入的每个负载都会获得一个唯一的负载编号,该编号是使用公式自动计算的,基于口径名称和递增的编号。到目前为止,我输入的每个负载都有一个数字,即使它以前被重复过。除了日期和回合数外,我经常重复的流行负载都是相同的,但目前会有不同的负载数。有没有办法跳过这些重复的负载并为其分配先前的负载编号或根本不分配负载编号,使用公式而不是手动?

我知道这要求很高,但我非常感谢任何帮助!如果这甚至不是最好的解决方法,我当然愿意接受建议。

示例工作簿位于:

https://www.dropbox.com/s/v5y1ufxjiosmnap/My%20Reloading%20Data%20-%20Sample.xlsx?dl=0

这是我迄今为止尝试过的:

在 Q2 列中,结合所有条件。

=C17&E17&F17&G17&H17&L17&M17&N17&P17

在 R2 列中查找重复项。

=IF(COUNTIF($Q$2:$Q17, $Q17)>1, "Duplicate", "")

D2 是 Load # 列。

=IF(R17="Duplicate","",(TEXT(C17,0)&"-"&TEXT(COUNTIF($C$2:C17,C17),"000")))

这将跳过重复的加载而不给它们加载 # 将单元格留空。我很想找到并匹配该负载#应该是什么并插入它。此外,当顺序编号恢复时,它就像计算重复行一样。例如 D2 可能看起来像:

9mm-001
9mm-002

(跳过重复并留空,但希望它找到、匹配和插入重复的加载#)

9mm-004 (I'd like to to be 9mm-003)

【问题讨论】:

  • 听说过“紫色危机”吗?在春末夏初的几个月里,绝对神奇的鳟鱼会飞。
  • 那是传统的硬头苍蝇,是吗?从未尝试过。我去看看。
  • (1) 我知道'helper' 列使逻辑更加透明,但是一旦建立了逻辑,像 COUNTIFS 这样的新函数可以消除'helper' 列。 (2) 为什么需要发布启用宏的工作簿。一些志愿者可能会犹豫是否要下载 xlsm,而 xlsx 不会有问题。 (3) 是的,那只苍蝇对 1 月下旬的冰川补给溪流也有好处 (4) 0.40 S&W 你有什么?
  • 对不起,对于示例,我复制了我的重新加载工作簿,该工作簿启用了宏但没有捕获它。我会改变它。为什么要在 10 毫米的情况下拍摄 .40 S&W?!
  • 比起 P220,我更喜欢带有 Hogue 握把的 P226 海军蓝。

标签: excel duplicates uniqueidentifier


【解决方案1】:

您应该能够使用VLOOKUP 公式或MATCHINDEX 的组合来实现此目的。

VLOOKUP(垂直查找)在另一个单元格中查找匹配项并从偏移列返回一个值。不匹配,如果您使用 FALSE 作为最后一个参数,则返回 #N/A 错误。

因此,在 D20(例如)中,您可以使用 Q 列作为行列式,使用以下内容,假设您在 R 列中有 D 的副本:

=IFERROR(VLOOKUP(Q20,Q$1:R19,2,FALSE),[value for newly found loadno])

这个公式的作用是计算VLOOKUP - 如果没有找到记录,则计算一个新值。 VLOOKUP 将查看当前行 Q 列中的连接键,搜索所有先前的列(注意它锚定在第 1 行,但不锚定在范围的底部,因此您可以复制公式),它使用列2(Q 是第 1 列,因此 R 是第 2 列)的结果,并且要求完全匹配 (FALSE)。如果找不到,则返回 NA 并让IFERROR 的后半部分接管。

看看你是怎么做的。

MATCH INDEX 可能效果更好,因为您不需要额外的 R 列,因为 VLOOKUP 只能查看键的右侧。

这是一个 INDEXMATCH 解决方案 - 有点难以理解,但更灵活的解决方案。

=IFERROR(INDEX(D$1:D19,MATCH(Q20,Q$1:Q19,0)),[value for newly found load number])

我更喜欢这个。

外部函数表示返回列表中的第 n 个值。内部 MATCH 函数表示在此列表 (Q1:Q19) 中找到此值 (Q20)。 MATCH 函数的第三个参数 0 表示匹配必须是精确的。

【讨论】:

  • 非常感谢!我两个都去上班了。一开始都没有,但我想通了。使用 VLOOKUP,表数组必须具有与 col_index_num 一样多的列。 IFERROR 中缺少的 R 通过我关闭了一分钟。这似乎是一个更清洁的解决方案。
  • 这不是一个大问题,但是即使由于重复而跳过了行,如何保持我的数字顺序呢?我的公式计算行号。这是我在 D2 中的内容:=IFERROR(INDEX(D$1:D2,MATCH(Q2,Q$1:Q1,0)),(TEXT(C2,0)&"-"&TEXT(COUNTIF($C$2:C2,C2),"000")))
  • @Flyfishermanmike,请将此答案标记为已解决(此答案的赞成票下方的代码)。它表明这个问题得到了回答,并归功于回答者。谢谢!
  • 会的。我将为我的另一个问题开始一个新问题。
猜你喜欢
  • 2013-03-23
  • 2021-03-12
  • 2012-12-29
  • 2010-10-19
  • 2021-12-24
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多