在 Microsoft 365 for Mac 或 Excel 2024 for Mac 中,结合使用 CHOOSECOLS、TOCOL、HSTACK 和 FILTER,将重复的艺术素材标签和数量转换为库存行。下面的实战公式可保持配对对齐、保留零数量并保留不完整条目。

本演练面向 Mac 桌面用户,其工作表重复“属性列 + 其数量列”的模式。此处每个属性为一艺术素材标签(如 Circle Tile)。任务是生成两列库存,并能在不将标签与数量分离的情况下查找数量。

哪些 Excel for Mac 版本支持此公式?

Microsoft 明确列出 Excel for Microsoft 365 for Mac 和 Excel 2024 for Mac 支持全部三个重塑函数:CHOOSECOLS、TOCOL 和 HSTACK。请使用这些版本之一以运行主公式。

Excel 2021 for Mac 包含动态数组、FILTER、LET 和 XLOOKUP,但这并不代表它支持更新的重塑函数。Microsoft 的 Excel 2021 for Mac 功能文档 列出了其可用的数组和查找功能;上述三个函数页面均未列出 Excel 2021。

在应用程序的“关于”对话框中查看您的版本和许可类型。Microsoft 的 Office 版本指南 说明 Mac 版“关于”对话框同时显示版本号和许可类型。如果您的版本缺少重塑函数,请改用 Microsoft 365 for Mac 或 Excel 2024 for Mac 以获得自动方法,或使用下文所述的手动堆叠路径。

建立完整的合成示例

在空白工作表的 A1:F4 中输入以下数据。保留第 3 行中间两个空单元格为真正的空值。所有标签和数量仅作示例。

属性 1 数量 1 属性 2 数量 2 属性 3 数量 3
Circle Tile 4 Line Texture 2 Dot Pattern 0
Arc Motif 3 Grid Texture 5
Circle Tile 7 Wave Pattern 6 Square Tile 1

每对相邻列代表一条库存条目。预期输出先按源行横向读取,再向下继续。Circle Tile 出现两次是因为它们是独立条目;合并重复标签属于额外任务。

本方法假设每个标签紧随其数量之后,且所有选定列均属于该重复模式。若工作表还包含必须伴随每条目的集合名称或其他字段,此两列输出将无法保留该字段。请在应用公式前确定库存所需的字段。

将重复配对转为库存行

在 H1 输入 Asset,在 I1 输入 Quantity。保持这些标题下方的输出区域为空。将下面的完整公式粘贴到 H2,然后按 Return。动态数组公式只需输入一次,即可扩展到相邻单元格,详见 Microsoft 的 数组公式指南。

=LET(
    source,A2:F4,
    clean,IF(source="","",source),
    labels,TOCOL(CHOOSECOLS(clean,1,3,5),0,FALSE),
    quantities,TOCOL(CHOOSECOLS(clean,2,4,6),0,FALSE),
    keep,((labels<>"")+(quantities<>""))>0,
    FILTER(HSTACK(labels,quantities),keep,"No inventory entries")
)

预期结果占据 H2:I9:

Asset Quantity
Circle Tile 4
Line Texture 2
Dot Pattern 0
Arc Motif 3
Grid Texture 5
Circle Tile 7
Wave Pattern 6
Square Tile 1

示例的配对顺序、八个输出条目、零值保留及数量总计 28 已通过小型确定性 Python 计算核对。Excel 公式已对照 Microsoft 文档的函数语法进行检查;未在 Excel 中实际执行。

公式如何保持配对对齐

LET 为中间结果命名,以便公式复用。名称 source、clean、labels、quantities 和 keep 仅存在于此公式内;您无需创建命名范围。Microsoft 在其 LET 参考 中记录了此行为。

CHOOSECOLS 选取标签列 1、3、5 与数量列 2、4、6。这些数字为所选源区域内的位置。Microsoft 的 CHOOSECOLS 文档 确认它返回数组中指定的列。

两个 TOCOL 调用均使用 0 以保留每个位置,使用 FALSE 按行扫描。因它们以相同顺序遍历匹配位置,每个标签均与其数量保持对齐。Microsoft 在 TOCOL 参考 中记录了这两个参数。

HSTACK 将生成的两列并排放置。过滤前两者均含九个位置,长度一致。Microsoft 说明 HSTACK 会水平追加数组,并在行数不同时用错误值填充较短数组。

最后,keep 选取包含标签、数量或两者均有的位置。FILTER 仅移除完全为空的配对。其最后一个参数在无条目时提供提示消息,遵循 Microsoft 文档的 FILTER 语法。

保留空白与零值且不隐藏不完整条目

空白数量与数值零传递不同信息。零为录入的计数;空白仍需解释。Microsoft 的 TOCOL 示例显示未处理的空单元格可能返回零。因此 clean 步骤使用 IF 在重塑前将空源单元格转为空文本。Microsoft 在 IF 参考 中记录了条件返回值。

公式刻意保留不完整配对以使其可见。在依赖结果前请进行以下核查:

源配对 输出行为 操作
标签与数值数量 保留两者 核对数量是否为预期值
标签与零 保留零 当零为有意计数时保留
两单元格均空 移除该配对 无需修正
标签配空数量 保留标签与空数量 补全数量
空标签配数量 保留空标签与数量 补全标签

避免分别从标签与数量数组中剔除空值。若某位置缺标签、另一位置缺数量,分别删除空值会导致数组错位并产生错误配对。在合并后再保留位置是本公式的关键设计。

包含空格的看似空单元格不被本公式视为空。请在源数据中清理此类条目。同样,公式保留以文本形式录入的数量而不自动转换。计算总计前请复核这些值。

查找单条目或返回所有匹配条目

在 K2 输入 Circle Tile。要获取其首个数量,在 L2 输入以下公式:

=XLOOKUP(K2,CHOOSECOLS(H2#,1),CHOOSECOLS(H2#,2),"No matching asset",0)

H2# 指代从 H2 开始的整个溢出结果,因此查找会随其大小变化而更新。Microsoft 在 溢出区域运算符文档 中解释了此表示法。

结果为 4。显式匹配模式 0 要求精确匹配,默认搜索返回首个匹配条目。Microsoft 的 XLOOKUP 参考 记录了这两种行为。还确认 XLOOKUP 在 Excel 2016 和 Excel 2019 中不可用。

若重复标签有意义,首次匹配查找不足。要返回所有 Circle Tile 条目,将下面的完整替代公式放入 N2,在 N:O 列预留空间:

=FILTER(H2#,CHOOSECOLS(H2#,1)=K2,"No matching asset")

这会返回两行:Circle Tile 配 4 与 Circle Tile 配 7。FILTER 返回满足所提供条件的行,详见 Microsoft 的 FILTER 参考。当单个匹配条目即可回答问题时选用首次匹配公式;需检查每个出现时选用筛选结果。

验证结果并调整源区域

对于示例,确认输出八行且 Dot Pattern 仍为零数量。然后对比源数量总计与重塑后数量总计。在两个备用单元格输入以下公式:

=SUM(B2:B4,D2:D4,F2:F4)
=SUM(CHOOSECOLS(H2#,2))

两者均应返回 28。Microsoft 的 SUM 文档 支持添加多个区域并说明文本值会被忽略。总计一致并不能证明每个数量均为数值,也无法检测标签间数量被互换。请同时核对标签-数量配对。

增加源行时,将主公式中的 A2:F4 改为实际矩形区域(如 A2:F100)。引用外的行不纳入。若为四组重复配对,将源区域改为八列(如 A2:H100),并将标签位置更新为 1,3,5,7、数量位置更新为 2,4,6,8。

扩展到八列源数据时,将输出移至清晰区域(如 J2),并将下游溢出引用更新为 J2#。保持源区与输出区分离。无效列位置会产生错误,详见 CHOOSECOLS 错误。

解决输出受阻或使用手动堆叠路径

若主公式返回 #SPILL!,选中公式单元格并检查预期输出区域。移走该区域内的现有内容,并检查是否有合并单元格。将公式置于 Excel 表格之外:Microsoft 在 #SPILL! 故障排除指南 中说明溢出数组公式无法在表格内溢出,也无法溢出到合并单元格。

若源数据含错误,请在使用库存前先更正该源条目。公式不抑制错误;Microsoft 指出 FILTER 的包含数组若含错误会导致函数返回错误。将整个转换包裹在错误抑制中可能隐藏需修正的条目。

对于 Excel 2021 for Mac 的小型工作表,可手动达到相同的两列结构:将 A2:B4 复制到 H2:I4,将 C2:D4 复制到 H5:I7,将 E2:F4 复制到 H8:I10。仅删除两单元格均为空的行。此法按配对块堆叠而非主公式的源行顺序,且源数据变更后需重复操作。

完成上述手动设置后,Excel 2021 for Mac 可使用其文档记载的 XLOOKUP 功能配合固定区域:

=XLOOKUP(K2,H2:H10,I2:I10,"No matching asset",0)

一个完善的库存应保留每个有意义的配对、暴露不完整条目、并采用适合重复标签的查找方式。请先用样本确认这些特性,再扩展源区域以适配您的工作表。

来源