如何在 Google 表格中使用数组公式

已发表: 2023-06-10

2023 年初,谷歌为表格引入了几项新功能,其中八项用于处理数组。 使用这些函数,您可以将数组转换为行或列,从行或列创建新数组,或追加当前数组。

通过更灵活地处理数组并超越基本的 ARRAYFORMULA 函数,让我们看看如何将这些数组函数与 Google 表格中的公式一起使用。

目录

    提示:如果您也使用 Microsoft Excel,您可能会觉得其中一些功能很熟悉。

    转换数组:TOROW 和 TOCOL

    如果您的数据集中有一个数组要转换为单行或单列,则可以使用 TOROW 和 TOCOL 函数。

    每个函数的语法都是相同的, TOROW(array, ignore, scan)TOCOL(array, ignore, scan) ,两者只需要第一个参数。

    • Array :要转换的数组,格式为“A1:D4”。
    • Ignore :默认情况下,不忽略任何参数 (0),但您可以使用 1 忽略空白,2 忽略错误,或 3 忽略空白和错误。
    • Scan :此参数确定如何读取数组中的值。 默认情况下,该函数按行扫描或使用值 False,但如果您愿意,可以使用 True 按列扫描。

    让我们来看几个使用 TOROW 和 TOCOL 函数及其公式的示例。

    在第一个示例中,我们将获取数组 A1 到 C3,并使用默认参数和以下公式将其转换为一行:

    =TOROW(A1:C3)

    如您所见,数组现在是连续的。 因为我们使用了默认扫描参数,该函数从左到右(A、D、G)读取,向下读取,然后再次从左到右(B、E、H)读取,直到完成——逐行扫描。

    要按列而不是行读取数组,我们可以使用True作为扫描参数。 我们将忽略参数留空。 这是公式:

    =TOROW(A1:C3,,TRUE)

    现在您看到该函数从上到下(A、B、C)、从上到下(D、E、F)和从上到下(G、H、I)读取数组。

    TOCOL 函数的工作方式相同,但将数组转换为列。 使用相同的范围,从 A1 到 C3,下面是使用默认参数的公式:

    =TOCOL(A1:C3)

    同样,使用扫描参数的默认值,该函数从左到右读取并提供结果。

    要按列而不是行读取数组,请为扫描参数插入True ,如下所示:

    =TOCOL(A1:C3,,TRUE)

    现在您看到该函数改为从上到下读取数组。

    从行或列创建新数组:CHOOSEROWS 和 CHOOSECOLS

    您可能希望从现有数组创建一个新数组。 这使您可以创建一个新的单元格范围,其中仅包含另一个单元格的特定值。 为此,您将使用 CHOOSEROWS 和 CHOOSECOLS Google 表格函数。

    每个函数的语法相似, CHOOSEROWS (array, row_num, row_num_opt)CHOOSECOLS (array, col_num, col_num_opt),其中前两个参数都是必需的。

    • Array :现有数组,格式为“A1:D4”。
    • Row_numCol_num :要返回的第一行或第一列的编号。
    • Row_num_optCol_num_opt :您要返回的其他行或列的编号。 Google 建议您使用负数从下往上返回行或从右到左返回列。

    让我们看几个使用 CHOOSEROWS 和 CHOOSECOLS 及其公式的示例。

    在第一个示例中,我们将使用数组 A1 到 B6。 我们要返回第 1、2 和 6 行中的值。公式如下:

    =CHOOSEROWS(A1:B6,1,2,6)

    如您所见,我们收到了这三行来创建我们的新数组。

    再举一个例子,我们将使用相同的数组。 这一次,我们要返回第 1、2 和 6 行,但 2 和 6 的顺序相反。 您可以使用正数或负数来获得相同的结果。

    使用负数,你会使用这个公式:

    =CHOOSEROWS(A1:B6,1,-1,-5)

    解释一下,1 是要返回的第一行,-1 是要返回的第二行,即从底部开始的第一行,-5 是从底部开始的第五行。

    使用正数,您将使用此公式获得相同的结果:

    =CHOOSEROWS(A1:B6,1,6,2)

    CHOOSECOLS 函数的工作方式类似,不同之处在于当您想要从列而不是行创建新数组时使用它。

    使用数组 A1 到 D6,我们可以使用以下公式返回第 1 列(A 列)和第 4 列(D 列):

    =选择项(A1:D6,1,4)

    现在我们有了只有这两列的新数组。

    作为另一个示例,我们将使用从第 4 列开始的相同数组。然后我们将首先添加第 1 列和第 2 列,其中第 2(B 列)。 您可以使用正数或负数:

    =选择项(A1:D6,4,2,1)

    =选择项(A1:D6,4,-3,-4)

    正如您在上面的屏幕截图中看到的那样,使用单元格中的公式而不是公式栏中的公式,我们使用这两个选项收到相同的结果。

    注意:由于 Google 建议使用负数来反转结果的位置,因此如果您没有收到使用正数的正确结果,请记住这一点。

    换行以创建新数组:WRAPROWS 和 WRAPCOLS

    如果要从现有数组创建一个新数组,但要用每个列或行中的特定数量的值来包装,则可以使用 WRAPROWS 和 WRAPCOLS 函数。

    每个函数的语法相同, WRAPROWS (range, count, pad)WRAPCOLS (range, count, pad),其中前两个参数都是必需的。

    • 范围:要用于数组的现有单元格范围,格式为“A1:D4”。
    • 计数:每行或每列的单元格数。
    • Pad :您可以使用此参数在空单元格中放置文本或单个值。 这将替换您将收到的空白单元格的 #N/A 错误。 将文本或值包含在引号内。

    让我们来看几个使用 WRAPROWS 和 WRAPCOLS 函数及其公式的示例。

    在第一个示例中,我们将使用单元格区域 A1 到 E1。 我们将创建一个新数组,每行包含三个值。 这是公式:

    =WRAPROWS(A1:E1,3)

    如您所见,我们有一个包含正确结果的新数组,每行三个值。 因为数组中有一个空单元格,所以会显示 #N/A 错误。 对于下一个示例,我们将使用pad参数将错误替换为文本“None”。 这是公式:

    =WRAPROWS(A1:E1,3,”无”)

    现在,我们可以看到一个单词而不是 Google 表格错误。

    WRAPCOLS 函数通过从现有单元格范围创建新数组来完成相同的操作,但通过换行而不是换行来实现。

    在这里,我们将使用相同的数组,从 A1 到 E3,每列包含三个值:

    =WRAPCOLS(A1:E1,3)

    与 WRAPROWS 示例一样,我们收到了正确的结果,但也收到了由于单元格为空而导致的错误。 使用此公式,您可以使用pad参数添加单词“Empty”:

    =WRAPCOLS(A1:E1,3,”空”)

    这个新数组用一个词而不是错误看起来好多了。

    合并创建一个新数组:HSTACK 和 VSTACK

    我们要看的最后两个函数是用于附加数组的。 使用 HSTACK 和 VSTACK,您可以将两个或多个单元格范围添加到一起以形成一个水平或垂直的数组。

    每个函数的语法都是相同的, HSTACK (range1, range2,…)VSTACK (range1, range2,…),其中只需要第一个参数。 但是,您几乎总是会使用第二个参数,它将另一个范围与第一个范围组合在一起。

    • Range1 :要用于数组的第一个单元格区域,格式为“A1:D4”。
    • Range2,… :要添加到第一个单元格范围以创建数组的第二个单元格范围。 您可以合并两个以上的单元格区域。

    让我们看一些使用 HSTACK 和 VSTACK 及其公式的示例。

    在第一个示例中,我们将使用以下公式将范围 A1 到 D2 与 A3 到 D4 组合起来:

    =HSTACK(A1:D2,A3:D4)

    您可以看到我们的数据范围组合在一起形成了一个水平数组。

    对于 VSTACK 函数的示例,我们组合了三个范围。 使用以下公式,我们将使用 A2 到 C4、A6 到 C8 和 A10 到 C12 的范围:

    =VSTACK(A2:C4,A6:C8,A10:C12)

    现在,我们有一个数组,其中所有数据都使用单个单元格中的公式。

    轻松操作数组

    虽然您可以在某些情况下使用 ARRAYFORMULA,例如 SUM 函数或 IF 函数,但这些额外的 Google 表格数组公式可以节省您的时间。 它们可以帮助您完全按照您的需要排列您的工作表,并使用一个数组公式。

    如需更多类似此类但使用非数组函数的教程,请查看如何在 Google 表格中使用 COUNTIF 或 SUMIF 函数。