要合并重复的资产标签而不增加行数,请分别为两个列表中的每个标签的出现次数编号,然后查找标签与出现次数的组合。本 Mac 版 Excel 操作指南会保留左侧的每一行,并标记缺失的匹配项。
按出现次数匹配是什么意思?
假设两个艺术资产列表都包含多行标记为 Arc Tile 的记录。你的任务是将源列表中的第一个数量添加到左侧第一个 Arc Tile,将第二个源数量添加到左侧第二个,以此类推。其他标签可以出现在这些行之间;每个标签的出现次数单独计算。
仅按标签建立关系会产生歧义。如果一个列表中有三行 Arc Tile,另一个列表中有两行,那么配对所有匹配组合会为该标签生成六种组合。普通查找还有另一个局限:Microsoft 说明,XLOOKUP 会返回找到的第一个匹配项。重复进行仅按标签的查找,不会依次匹配后续出现项。XLOOKUP 函数
解决方法是让查找键更加具体:Arc Tile|1、Arc Tile|2 和 Arc Tile|3。每个带编号的键都标识一个出现项。下面的方法是基于有文档说明的 Excel 函数构建的示例;Microsoft 的文档说明了这些函数的行为。
当行顺序决定配对关系时,请使用此方法。如果应当根据单独的资产标识符或修订字段来匹配行,请使用这些信息。如果行顺序没有意义,出现次数编号无法确定哪两条记录应当配对。
哪些 Mac 版 Excel 版本支持此方法?
主要公式使用 COUNTIF、& 连接符和 XLOOKUP。Microsoft 在相关函数页面上列出了 Microsoft 365 版 Excel(Mac)、Excel 2024(Mac)和 Excel 2021(Mac)。其 XLOOKUP 文档明确指出,该函数在 Excel 2016 和 Excel 2019 中不可用。XLOOKUP 函数、在 Microsoft Excel 中使用 COUNTIF 函数
先使用下面的向下填充查找公式。之后的变体会用一个溢出数组公式返回相同的七个结果。Microsoft 说明,溢出公式应放在 Excel 表格之外的工作表网格中。动态数组公式和溢出数组行为
设置两个示例资产列表
在一个工作簿中使用空白工作表。在 A1:B8 中输入以下左侧列表。这些标签和数量仅作示例;左侧数量仍属于原始列表,不用于决定匹配项。
| 资产标签 | 左侧数量 |
|---|---|
| Arc Tile | 4 |
| Dot Panel | 2 |
| Arc Tile | 6 |
| Line Print | 3 |
| Dot Panel | 5 |
| Arc Tile | 1 |
| Ring Card | 2 |
在 G1:H7 中输入源列表。请保持所示的行顺序,以便结果与本指南一致。
| 资产标签 | 源数量 |
|---|---|
| Dot Panel | 12 |
| Arc Tile | 8 |
| Line Print | 7 |
| Arc Tile | 9 |
| Dot Panel | 0 |
| Grid Sheet | 11 |
在 C1、D1 和 E1 中添加标题 出现次数、合并键 和 匹配的源数量。在 I1、J1 和 K1 中添加 出现次数、合并键 和 被左侧列表使用。将 F 列留空,以便在视觉上分隔两个列表。
在此示例中,请使用长度小于 255 个字符的非空文本标签,并确保大小写和空格一致,且不含 *、? 或 ~ 等通配符。为每个源行输入一个数值型源数量,适用时包括零。这些前提可确保简单公式的解释没有歧义。
为出现次数编号并生成查找键
从各自列表顶部开始计数每个标签
在 C2 中输入此公式,按 Return,然后向下复制到 C8:
=COUNTIF($A$2:A2,A2)
第一个端点 $A$2 保持固定。向下复制时,第二个端点会扩展。对于每一行,公式都会计算该行标签截至当前行已出现的次数。COUNTIF 会统计符合所提供条件的单元格。在 Microsoft Excel 中使用 COUNTIF 函数
左侧的出现次数结果应为 1, 1, 2, 1, 2, 3, 1。特别是,第三个 Arc Tile 会得到 3,即使它的行被其他标签隔开也是如此。
在 I2 中输入相应的源公式,然后复制到 I7:
=COUNTIF($G$2:G2,G2)
源列表的出现次数应为 1, 1, 1, 2, 2, 1。分别计算两个列表:某一行的出现次数,是该标签在其所属列表中匹配项中的位置。
合并标签和出现次数
在 D2 中输入此公式,并复制到 D8:
=A2&"|"&C2
在 J2 中输入此公式,并复制到 J7:
=G2&"|"&I2
现在,左侧列表包含 Arc Tile|1、Arc Tile|2 和 Arc Tile|3。源列表只包含前两个键。这样,在返回任何数量之前,就能看出缺失了第三个出现项。
为左侧每一行返回一个源数量
在 E2 中输入以下公式,然后复制到 E8:
=XLOOKUP(D2,$J$2:$J$7,$H$2:$H$7,"Unmatched",0)
公式会搜索源合并键,返回对应的源数量;如果缺少相应的带编号键,则显示 Unmatched。最后的 0 明确要求进行精确匹配,这也是 XLOOKUP 的默认设置。XLOOKUP 函数
完成后的左侧结果应为:
| 资产标签 | 左侧数量 | 出现次数 | 合并键 | 匹配的源数量 |
|---|---|---|---|---|
| Arc Tile | 4 | 1 | Arc Tile\ | 1 |
| Dot Panel | 2 | 1 | Dot Panel\ | 1 |
| Arc Tile | 6 | 2 | Arc Tile\ | 2 |
| Line Print | 3 | 1 | Line Print\ | 1 |
| Dot Panel | 5 | 2 | Dot Panel\ | 2 |
| Arc Tile | 1 | 3 | Arc Tile\ | 3 |
| Ring Card | 2 | 1 | Ring Card\ | 1 |
左侧仍有七行。第二个 Arc Tile 得到 9,而不是重复第一个出现项的 8。第三个没有对应的源项。Ring Card 也没有对应项,而第二个 Dot Panel 匹配到的零值仍清晰可见。
请将 Unmatched 与零区分开来。在此示例中,零是真实的源数量;缺失匹配时使用零会掩盖这种差异。同样,在解释输出之前,请先处理空白的源数量,以免将空源单元格误认为记录的数量。
可选:将结果作为一个数组返回
检查向下填充的结果后,只清除 E2:E8,并在 E2 中输入此替代公式:
=XLOOKUP(D2:D8,$J$2:$J$7,$H$2:$H$7,"Unmatched",0)
此公式将左侧的全部七个合并键作为查找输入。使用示例数据时,结果会按左侧列表的顺序占据 E2:E8。按 Return;相邻的输出单元格必须为空。Microsoft 将数组结果自动放置到单元格中的行为称为溢出。动态数组公式和溢出数组行为
如果你希望每行都有可单独检查的公式,请选择向下填充版本。如果你希望用一个公式控制结果列,请选择溢出版本。两者都依赖相同的出现次数键。
检查缺失的匹配项和未使用的源行
保留左侧行数并不意味着每个源行都已使用。添加反向检查,让多余的源出现项也能显示出来。在 K2 中输入以下内容,并复制到 K7:
=COUNTIF($D$2:$D$8,J2)
对于此示例,前五个源行会返回 1,而 Grid Sheet|1 会返回 0。这个零表示该源行没有左侧对应项。大于 1 的值意味着多个左侧键引用了同一个源键,需要进行调查。
请结合使用以下检查:
- 确认输出恰好占据原有的七个左侧行。
- 确认数量序列为:
8, 12, 9, 7, 0, Unmatched, Unmatched。 - 确认第三个
Arc Tile和Ring Card仍清晰地标记为未匹配。 - 确认
Grid Sheet|1在源数据审计中被标记为未使用。
预期序列和未使用源数据的结果通过对出现次数配对逻辑进行的小型确定性计算进行了检查。Excel 公式本身根据 Microsoft 记录的语法进行了检查;但未在 Mac 版 Excel 中执行。
扩展工作簿前先排查结果
排序后配对关系发生变化
出现次数公式使用当前行顺序。对任一列表排序并重新计算后,哪个重复行会得到出现次数 1 或 2 可能会改变。请在编号之前确定所需顺序。如果需要固定的配对关系,请保留能够记录该关系的稳定标识符,而不要只依赖重新计算的位置。
标签看起来相似,却意外匹配
Microsoft 指出,COUNTIF 不区分大小写、识别通配符条件,并且在存在前导或尾随空格及其他多余字符时可能产生意外结果。Microsoft 还记录了匹配长度超过 255 个字符的字符串时的限制。在两个列表中为标签统一格式后再编号;上面的短标签格式一致,可避免这些情况。在 Microsoft Excel 中使用 COUNTIF 函数
数组公式显示 #SPILL!
检查 E3:E8 中是否有现有内容,包括之前向下填充的公式。先移走需要保留的内容,然后清除阻碍。如果公式位于 Excel 表格内,请使用向下填充方法,或将溢出结果移到表格之外。这些都是有文档说明的溢出限制。动态数组公式和溢出数组行为
你需要不使用 XLOOKUP 的查找方法
相同的辅助键也可用于 INDEX/MATCH 查找。作为上述任一公式的替代方案,在 E2 中输入此公式,并复制到 E8:
=INDEX($H$2:$H$7,MATCH(D2,$J$2:$J$7,0))
这里,MATCH 与 0 会定位精确的合并键,而 INDEX 会返回该位置的数量。缺失的键会有意显示为 #N/A。Microsoft 说明当前 Mac 版本支持这两个函数。此标量公式无需溢出输出。MATCH 函数、INDEX 函数
新增行未出现在结果中
本指南使用固定范围。添加行时,请同步扩展出现次数和合并键公式、源查找和返回范围,以及反向审计范围。对于溢出版本,还要将左侧查找输入范围扩展到 D8 之外。仅在这些范围下方添加数据,不会将其纳入计算。
当输出序列和反向审计与预期顺序一致时,你就得到了一个可用的按出现次数合并:每个左侧资产行都保留原位,至多获得一个源数量,并在对应出现项缺失时保留清晰可见的标记。
来源
XLOOKUP 函数 — Microsoft 支持。
在 Microsoft Excel 中使用 COUNTIF 函数 — Microsoft 支持。
动态数组公式和溢出数组行为 — Microsoft 支持。
MATCH 函数 — Microsoft 支持。
INDEX 函数 — Microsoft 支持。