Excel 的 MAP 函数:它的定义、用法和实际示例

  • MAP 遍历一个或多个数组,并对每个元素应用 LAMBDA 表达式以返回一个新数组。
  • LAMBDA 表达式应该放在最后,并为每个输入数组声明一个参数。
  • 常见错误:#VALUE! 表示参数不正确,#NAME? 表示版本不支持。
  • 关键示例:条件转换、布尔验证和组合过滤。

Excel MAP 函数

如果您经常处理数据范围,并且想要转换数据而无需使用辅助列或复杂的公式嵌套,那么 Excel 的 MAP 函数将成为您的完美助手。 此函数遍历一个或多个矩阵,并根据结果构建一个新矩阵。 申请一个 LAMBDA 函数 对每个对应的元素执行相同的操作。换句话说:它实现了典型的“获取一个值,根据我的逻辑更改它,然后返回新值”的操作,但规模是数组。

除了强大的功能之外,它最大的优势在于其灵活性:你可以向它传递一个或多个输入矩阵,并使用 LAMBDA 定义你自己的迷你函数,逐个处理元素。 使用 MAP 时,结果会“溢出”如下: 动态矩阵因此,您无需向下或向右复制公式:输出范围会自动以适当的大小显示。

Excel中的MAP究竟是什么?

简单来说,MAP 返回一个 通过变换源矩阵的每个值生成的矩阵 使用公式末尾指定的 LAMBDA 函数。该 LAMBDA 函数针对每个位置独立求值,并将每个输入数组的对应元素作为参数。

把 MAP 想象成一条传送带:一端输入原始矩阵(一列、一行或多行或多个范围),另一端输出处理后的新矩阵。 该函数的核心是 LAMBDA 函数。因为在那里,您可以决定对每个值(或如果有多个矩阵,则对每个值的组合)应用哪种计算。

这种工作方式可以带来清晰度并减少错误:您只需将逻辑封装在一个 LAMBDA 表达式中,Excel 即可轻松地将其复制到所有元素中。 无需再逐个单元格重复输入公式 或者当模式相同时,用相对参照物进行争论。

在 Excel 中使用 MAP

MAP 语法和参数

该函数的整体形式非常简单明了,遵循清晰的模式。 这是使用分号的区域性语法规范。:

=MAP(matriz1; ; ; ...; LAMBDA(parámetro1; ; ; ...; cálculo))

以下情况成立: 矩阵1是必需的 (这是你至少需要遍历的数组),如果你的逻辑需要,你可以添加更多数组。最后一个参数必须始终是 LAMBDA 表达式,并且必须为每个传递的数组声明一个参数。

  • 矩阵1:范围、动态矩阵或矩阵常量,将逐个元素遍历。
  • matrix2、matrix3、…(可选):将按位置并行处理的其他范围。
  • LAMBDA:定义为最后一个参数。必须有 参数太多了 将您提供的矩阵转换为变换后的值,并返回每个位置的值。

一个重要的细节:在列表分隔符为逗号的配置中,您将看到公式中使用逗号而不是分号。 两种格式等效。它们只响应 Excel 的区域设置。

使用MAP的关键要求和指南

为了使一切按预期运行,尊重矩阵和参数之间的对应关系至关重要。 如果将两个数组传递给 MAP 函数,则 LAMBDA 函数必须声明两个参数。如果传递三个数组、三个参数等等,正是这种一对一的映射关系使得 Excel 能够在每次迭代中正确匹配元素。

还要确保输入范围的大小和方向一致(每行/列要遍历的单元格数量相同)。 采用一致的安排可以最大限度地减少意外结果。 并简化了叶片维护。

您编写的 LAMBDA 函数可以包含您需要的所有逻辑:条件函数、算术运算、验证、文本函数调用、逻辑函数等。 如果你的 LAMBDA 函数每次迭代返回一个值MAP 会将其合成一个具有相同维度模式的最终矩阵。

Excel 网页

错误与诊断:需要注意的案例

如果您提供的 LAMBDA 函数结构不合理,或者声明的参数数量与输入数组不符, MAP 将返回 #VALUE! 错误,并带有标签“参数不正确”。当忘记添加参数或在 LAMBDA 表达式中输入多余的参数时,就会出现这种情况。

还要检查分隔符和括号:有时语法错误会伪装成参数问题。 确认 LAMBDA 是最后一个参数 并且确保每个参数名称在计算中都使用正确。

此外,如果您使用的是不支持动态数组(或不支持 LAMBDA 和 MAP 函数)的早期版本 Excel,则可能会看到以下错误: #NAME? 表示该函数不存在在这种情况下,您需要安装具有更新功能的 Microsoft 365 或 Excel 网页版。

何时使用 MAP 函数,何时使用其他函数

当您需要对一个或多个数组的每个元素应用相同的逻辑并将结果收集到一个新数组中时,请使用 MAP。 它非常适合基本转换、验证和点对点组合。 (按行或按列)无需手动循环。

如果您的操作最好按行或整列定义,则 BYROW 或 BYCOL 可能更合适,因为它们会对每一行/列应用 LAMBDA,并返回每一行/列的结果。 MAP 函数在元素级别工作。而 BYROW/BYCOL 则是在行/列聚合级别进行聚合。

要从头开始生成具有计算出的行和列模式的数组,MAKEARRAY 更合适。 无论您需要累计金额还是减少金额 在矩阵中,这就是 SCAN(中间累积)或 REDUCE(最终累积)发挥作用的地方。

兼容性、可用性和分隔符

MAP 是 Microsoft 365 和 Excel 网页版中提供的一系列现代 Excel 函数之一。 如果你的版本中没有显示该功能,你可能需要更新版本。 更新为与动态矩阵和 LAMBDA 兼容的版本并进行审查 如何在Excel中导入和导出数据.

根据您所在地区的设置,列表分隔符可能是分号或逗号。 在西班牙,通常用分号。 (;),而在英语语法中,逗号(,)更为常见。请根据您的实际情况调整示例中的公式。

还要记住,MAP 结果会以动态矩阵的形式输出。 避免下方或右侧的单元格被占用。 从结果的初始单元格开始,这样溢出就不会产生冲突。

MAP 的实用模式

条件转换:应用 LAMBDA 函数,根据规则(阈值、范围、类别)修改值,否则返回原始值。 它是辅助柱的优雅替代品。 使用嵌套的 IF 语句或重复转换。

并行验证:遍历两列或多列,并根据您的标准按位置返回 TRUE/FALSE(例如,检查两个标志是否同时为 TRUE)。 这种模式与 FILTER 模式配合使用效果非常好。 筛选出有效记录。

点对点合并:通过计算差异、加权平均值或使用分隔符连接等方式,将多个数组中的值合并为一个输出。 LAMBDA 的灵活性允许您创建自己的“自定义函数”。 无需宏或VBA。

参考已重现的示例

然后,我们将使用相同的概念重述这三个关键案例研究,以便您可以轻松地复制和改编它们。 请根据您使用的矩阵,注意 LAMBDA 参数的数量。:

  • 高于某个值的方块:A1:C2 中的数据和转换大于 4 的值的公式。
=MAP(A1:C2; LAMBDA(a; SI(a>4; a*a; a)))
  • 两列均为真:并行评估列 TableA 和 TableA。
=MAP(TablaA; TablaA; LAMBDA(a; b; Y(a; b)))
  • 按尺寸和颜色筛选带 MAP 和后滤波的布尔掩码。
=FILTRAR(D2:E11; MAP(D2:D11; E2:E11; LAMBDA(s; c; Y(s="Grande"; c="Rojo"))))

在任何情况下,请记住根据您的书籍调整分隔符和列/表名称。 核心机制始终不变。MAP 函数迭代,LAMBDA 函数决定返回什么。

与其他现代 Excel 函数的关系

当与动态数组生态系统中引入的其他功能结合使用时,MAP 的优势会更加明显。 这些单品和它非常搭。:

  • Lambda 函数:定义了无需 VBA 的可重用逻辑。它是您在 MAP 流程末尾编写的部分,用于决定如何处理每个元素。
  • REDUCE 函数:遍历矩阵并累加单个结果,非常适合自定义摘要。
  • 扫描功能类似于 REDUCE,但返回所有中间累积值,非常适合逐步结果序列。
  • MAKEARRAY 函数:通过定义行、列和填充每个位置的 LAMBDA 从头开始​​生成矩阵。
  • BYCOL 函数:对每一列应用 LAMBDA 函数,并返回每个列的结果。
  • 按行函数相当于 BYCOL,但逐行操作。
  • 省略功能在 LAMBDA 中,它允许你检测是否省略了可选参数,这对于构建灵活的逻辑非常有用。

借助这组函数,您可以满足各种各样的需求:从转换批量数据到创建完全基于公式的自定义算法。 关键在于根据具体情况将每种工具结合起来使用。.

常见问题

  • MAP 是否会修改原始数据? 不。MAP 函数会保留输入数组不变,并返回一个包含结果的新数组,结果会从您输入公式的单元格溢出。
  • 如果矩阵的大小不同会发生什么情况? 理想情况下,它们的尺寸和形状应该一致,以避免不一致。如果它们不匹配,请重新审视您的产品系列设计,或考虑其他符合您需求的元素。
  • 我可以将 MAP 函数嵌套在其他函数中吗? 是的。通常的做法是使用 MAP 函数构建逻辑掩码,并将其与 FILTER 函数链接起来,或者在与其他函数聚合数据之前对数据进行预处理。
  • 我如何判断问题是出在氧传感器上还是出在参数上? 如果出现 #VALUE! 并显示消息“参数不正确”,请检查 LAMBDA 参数的数量是否与矩阵的数量匹配,以及 LAMBDA 是否位于公式的末尾。

MAP 函数采用“逐元素”方法,非常适合数据清理和规范化工作流程、具有明确规则的分析以及生成自定义输出。 掌握其语法并将其与 LAMBDA 结合使用,可以开启无限的可能性。 在现代Excel中。

Excel 中的重复数据
相关文章:
Excel 中的重复数据:如何查找并删除