一个单元格的预期值

一个单元格的预期值

我正在尝试从一组数字中计算预期值。所有数字都在一个单元格中,用逗号分隔,我无法将它们拆分到不同的单元格中。有没有办法只从一个单元格计算这个,还是我需要将它们分散开来?提前谢谢。

答案1

一个想法是,如果您不需要实际检查输入,那么您可以使用Text To Columns它们将它们放入真实单元格中,但这些单元格列可以隐藏,因此不会创建“混乱”的视图。实际上,即使您确实希望始终看到完整的输入。然后在单元格区域上使用公式来满足您的需求。

如果您不想这样做,那么目前有一种方法可以将每个单个字符串转换为离散元素,Excel 可以直接在许多函数和公式中使用它们,尽管它们不像单元格区域那样容易单独处理,那就是:

=FILTERXML("<group><element>"  &  SUBSTITUTE(A1,  ",",  "</element><element>")  &  "</element></group>",  "/group/element")

我在 XML 中使用了完整的单词,<>以使它们之间的关系更加清晰。但大多数人会用<a>for<group><b>for来代替它们<element>。他们这样做是为了显得拘谨,呃……也许是“简洁”……但也有一个非常重要的原因,尽管我怀疑大多数人都没有意识到这一点。

也就是说,在达到 Excel 限制之前,它只能生成大约 6,000 个字符的数组。因此,括号中的单个字符<>意味着每个元素的内容占用的字节数中只增加了 7 个字符,而上面的每个元素将额外使用 12 个字符,总共 19 个字符。您的字符串似乎足够短,不会有问题,但好习惯就是好习惯,即使那些人没有意识到他们有这样的习惯。如果他们意识到了这一点,“尤其如此”。

如果字符串的长度确实超出字符限制,则可以使用字符串函数截取字符串的片段并将其放入公式中,然后使用SPILL工具实际上可以完全解决这个问题。代价是复杂,但理解起来并不困难。

无论如何,FILTERXML()它都会帮您轻松完成这项工作。基本上,它会获取您构建的 XML 表达式形式的字符串,并将其拆分为单独的值。

它不仅可以像公式中的一部分一样用于输入另一部分,还可以用于填充单元格。如上所述,它将向下填充单列中的行。用它包裹它,TRANSPOSE()它将在一行中展开,跨越任意多个单元格。你甚至可以使用类似的东西INDEX(),甚至可以使用它来获取每个第 9 个值而不是所有值。

但在很短的时间内,不超过一生的时间,我们将拥有 Excel 的 19 个左右的新函数来执行字符串到数组的运算,反之亦然,甚至数组构建,而且这项任务将变得非常简单直接。没有长度限制或绕过它们的方法。

答案2

具有 O365 许可证的 Excel 具有一项新功能,目前仅在 Beta/Insider 预览版中可用。它被称为TEXTSPLIT()https://support.microsoft.com/en-us/office/textsplit-function-b1ca414e-4c21-4ca0-b1b7-bdecace8a6e7

使用此函数,您可以解析包含数字列表的单元格。

=TextSplit(A1,",")

就其本质而言,由分隔符分隔的数字列表将是文本。因此,将值拆分为单独的值也会产生文本。在文本中添加零会将结果强制转换为数字。

=TextSplit(A1,",")+0

此命令会将结果分散到所需的单元格中,但您可以将结果输入到另一个需要范围的函数中,例如 Sum() 或 Average()

=SUM(TEXTSPLIT(A1,",")+0)

在此处输入图片描述

答案3

您是否想将一个单元格中的值拆分到每个单元格?尝试此方法:

  1. 选择柱子-数据-文本分列- 打开将文本转换为列向导在此处输入图片描述

  2. 在下面将文本转换为列向导- 选择分隔符选项: 在此处输入图片描述

  3. 查看逗号选项: 在此处输入图片描述

  4. 选择数据格式目的地您需要-点击结束在此处输入图片描述

在此处输入图片描述

相关内容