查找并删除重复的 ID 并替换
Find and remove duplicate IDs and replace
我有非常基本的用户 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:$Q17, $Q17)>1, "Duplicate", "")
D2 是负载 # 列。
=IF(R17="Duplicate","",(TEXT(C17,0)&"-"&TEXT(COUNTIF($C:C17,C17),"000")))
这将跳过重复的加载并且不给它们加载 # 将单元格留空。我很想找到并匹配负载 # 应该是什么并插入它。此外,当顺序编号恢复时,它就像被计为重复行一样。例如 D2 可能看起来像:
9mm-001
9mm-002
(跳过重复并留空,但希望它查找、匹配并插入重复负载#)
9mm-004 (I'd like to to be 9mm-003)
您应该可以使用 VLOOKUP
公式或 MATCH
和 INDEX
的组合来实现。
VLOOKUP
(垂直查找)在另一个单元格中查找匹配项,并且 returns 来自偏移列的值。不匹配,如果你使用 FALSE 作为最后一个参数,returns a #N/A 错误。
因此,在 D20(例如)中,您可以使用 Q 列作为行列式,使用以下内容,假设您在 R 列中有 D 的副本:
=IFERROR(VLOOKUP(Q20,Q:R19,2,FALSE),[value for newly found loadno])
此公式的作用是计算 VLOOKUP
- 如果未找到记录,则计算一个新值。 VLOOKUP 将查看当前行 Q 列中的连接键,搜索所有先前的列(注意它锚定在第 1 行,但不锚定范围的底部,因此您可以复制公式),它使用列2(Q 是第 1 列,所以 R 是第 2 列)为结果,并要求完全匹配 (FALSE)。如果找不到,return NA 并让 IFERROR
的后半部分接管。
看看你是怎么做的。
MATCH
INDEX
可能会更好,因为您不需要额外的 R 列,因为 VLOOKUP
只能查看键的右侧。
这是一个 INDEX
和 MATCH
的解决方案 - 稍微难以理解,但更灵活的解决方案。
=IFERROR(INDEX(D:D19,MATCH(Q20,Q:Q19,0)),[value for newly found load number])
我更喜欢这个。
外部函数表示 return 列表中的第 n 个值。内部 MATCH
函数表示在此列表 (Q1:Q19) 中找到此值 (Q20)。 MATCH
函数的第三个参数 0 表示必须精确匹配。
我有非常基本的用户 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:$Q17, $Q17)>1, "Duplicate", "")
D2 是负载 # 列。
=IF(R17="Duplicate","",(TEXT(C17,0)&"-"&TEXT(COUNTIF($C:C17,C17),"000")))
这将跳过重复的加载并且不给它们加载 # 将单元格留空。我很想找到并匹配负载 # 应该是什么并插入它。此外,当顺序编号恢复时,它就像被计为重复行一样。例如 D2 可能看起来像:
9mm-001
9mm-002
(跳过重复并留空,但希望它查找、匹配并插入重复负载#)
9mm-004 (I'd like to to be 9mm-003)
您应该可以使用 VLOOKUP
公式或 MATCH
和 INDEX
的组合来实现。
VLOOKUP
(垂直查找)在另一个单元格中查找匹配项,并且 returns 来自偏移列的值。不匹配,如果你使用 FALSE 作为最后一个参数,returns a #N/A 错误。
因此,在 D20(例如)中,您可以使用 Q 列作为行列式,使用以下内容,假设您在 R 列中有 D 的副本:
=IFERROR(VLOOKUP(Q20,Q:R19,2,FALSE),[value for newly found loadno])
此公式的作用是计算 VLOOKUP
- 如果未找到记录,则计算一个新值。 VLOOKUP 将查看当前行 Q 列中的连接键,搜索所有先前的列(注意它锚定在第 1 行,但不锚定范围的底部,因此您可以复制公式),它使用列2(Q 是第 1 列,所以 R 是第 2 列)为结果,并要求完全匹配 (FALSE)。如果找不到,return NA 并让 IFERROR
的后半部分接管。
看看你是怎么做的。
MATCH
INDEX
可能会更好,因为您不需要额外的 R 列,因为 VLOOKUP
只能查看键的右侧。
这是一个 INDEX
和 MATCH
的解决方案 - 稍微难以理解,但更灵活的解决方案。
=IFERROR(INDEX(D:D19,MATCH(Q20,Q:Q19,0)),[value for newly found load number])
我更喜欢这个。
外部函数表示 return 列表中的第 n 个值。内部 MATCH
函数表示在此列表 (Q1:Q19) 中找到此值 (Q20)。 MATCH
函数的第三个参数 0 表示必须精确匹配。