问题标签 [spill-range]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
506 浏览

excel - 将 TEXTJOIN 与 FILTER 一起使用并引用溢出范围

我正在尝试使用 TEXTJOIN 和 FILTER 并引用溢出范围来查询存储在 Excel 中的销售列表,但这不起作用。

这是上下文:

  • 我有一个tabSales包含销售额的表格,其中包含以下数据:日期、客户、金额、年份(使用计算=YEAR([Date]

  • 我想在每年的报告表上以合并文本的形式显示该年度销售商品的客户列表(例如 2020 ⇨ “John Smith, Alan Dulles”)

这是我在报告表上尝试过的:

  • 我已经使用SORTandUNIQUE函数使 D 列上的报告显示发生一些销售的年份列表:(=SORT(UNIQUE(tabSales[Year]), , -1)单元格 A2 中的公式输入)

  • 然后,我尝试使用JOINTEXTandFILTER函数和 Excel 的溢出范围功能来显示每一年的所有客户的列表,这些客户在那一年卖掉了一些东西:=JOINTEXT(",", TRUE, FILTER(tabSales[Customer],tabSales[Year]=A2#))(B2 中的公式输入)

不幸的是,最后一个公式不起作用:

  • Excel 在 B2 中返回 #N/A
  • B2 不会溢出 B3、B4、...

没有溢出让我想知道FILTER函数中的 # 引用是否被识别......

我怎样才能让这个公式起作用?

具有 TEXTJOIN 功能的销售表 报告不起作用

0 投票
2 回答
493 浏览

excel-formula - Excel动态数组公式创建列的运行积

我需要从一列数字创建一个正在运行的产品(我可以使用一行,但在这里更容易演示一列。)输入可能是任意数组。事实上,在我要部署它的应用程序中,它不是一个范围,而是 LAMBDA 公式中的另一个动态数组。以下是数字输入列和公式所需输出的示例:

输入 预期的动态数组输出
10 10
8 80
3 240
4 960
5 4800

公式会溢出结果。

运行总数有很多解决方案,但我没有找到运行产品的解决方案。我尝试了几种不同的方法,包括 SUBTOTAL 和 AGGREGATE 都没有成功。我还构建了许多获得结果的方法,但被硬编码为固定数量的行。我需要公式来适应任意大小的行数。以下公式是迄今为止我得到的最接近的公式。

这个 LET 公式提供了结果,但是,如您所见,它固定为 5 行:

输入的任意数字数组放置在变量a中。

下一步是创建一些索引,用于处理这些数字:v是 a 中每个数字的垂直行序列 h相同的序列,但转置为列。stagr是从vh创建的索引矩阵,稍后将用于寻址 a 中的每个项目以其形成为乘法矩阵。如果将最后一个结果替换为stagr,则可以看到stagr的形状。它只是将一列向下移动一行,直到它们一直向下移动。

斯塔格

现在我们通过简单地使用 INDEX来使用stagr创建乘法矩阵m ,如下所示:但这并不完全是需要的,因为它采用第一行值 (10) 并复制它,因为 0 的 INDEX 被视为与 1 相同。为了得到我们想要的,我通过使用和内部 IF 语句来强制错误this:用 -1 替换 0 结果。即它会产生这个:INDEX(a,stagr)INDEX( a, IF(stagr>0,stagr,-1) )

m 有错误

现在,使用 IFERROR 将错误替换为 1,这样就解释了m的创建方式和原因。结果是这样的矩阵:

乘法矩阵

通过将m逐行相乘,我们得到了我们想要的输出,但这是我失败的地方

为了说明,我创建了一个变量,几乎显示了我如何尝试进行逐行乘法。

almost, INDEX(m,v,h) * INDEX(m,v,h+1) * INDEX(m,v,h+2) * INDEX(m,v,h+3) * INDEX(m,v,h+4)

你可以看到我粗略地将一列乘以下一列和下一列......并使用h + offset到达那里。这产生了几乎矩阵,结果只提供了该矩阵的第一列,其中包含答案。

虽然答案可能是几乎可以动态调整大小的一个很好的替代品,但这不是我真正的问题。我想要一个正在运行的产品,我怀疑有一种完全不同的方法,而不是简单地替换我的差不多.

为了清楚起见,结果必须是一个动态数组,该数组在没有辅助单元格或 CSE 下拉的情况下溢出。

哦......没有VBA。(@stackoverflow - 请添加非 VBA 标签)

0 投票
0 回答
83 浏览

excel - Excel SpillParent 和 SpillingToRange 难度

我正在尝试在某些 UDF 中的 Excel 中的 Range 对象上使用.SpillParent.SpillingToRange,当范围不在调用 UDF 的同一个工作表上时,会出现意外行为。

(我知道如果我使用“#”溢出运算符,我不需要这样的 UDF;我只是用一个非常简单的例子来说明这个问题)。

如果 [Sheet2!$C$2:$C$10] 是 $C$2 中公式溢出结果的范围,并且在 [Sheet1!$A$1] 中,我有“=MyUDF(Sheet2!C5)”,我得到从 [Sheet1!$C$2] 返回的值,而不是 [Sheet2!$C$2]。

例子:

使用 [Sheet2!$C$2:$C$10] = {1,2,3,4,5,6,7,8,9},

和 [Sheet1!$C$2] = 57,

在 Sheet1 的任何单元格中包含“=MyUDF(Sheet2!C5)”返回“57”,而不是“1”

我的实际功能更复杂,但这个简单的例子说明了异常。我可以使用和字符串操作跳过一些箍.Address,但在我看来,我应该得到 Sheet2 上溢出范围的实际第一个单元格......

0 投票
0 回答
26 浏览

excel - Excel OR 函数不允许溢出范围?

如何让 OR 函数返回溢出范围?

例如,在 excel 365 中,单元格 A1 和 B1 中,我有一个序列(20)的溢出范围。这会创建 2 个 1-20 的序列。在 c1 中,我尝试输入“=OR(A1#>1,B1#>1)”。我希望得到 20 行的结果,其中第一个为假,其他为真。但结果只在 c2 中返回 TRUE。知道如何填充整个列吗?

蒂亚!

0 投票
2 回答
246 浏览

arrays - 带查找的动态数组的逐行文本连接

这个问题与用户mark fitzpatrick的这个答案密切相关。

我的工作表图片

我在 M3# 和 AB3# (相同的列表)中有一个可变的国家代码标题列表和一个作为 A4# 行的唯一“提及”的可变列表。M4# 和 AB4# 中的公式计算 A4# 中的特定提及在每个国家/地区被列出的次数,分别为“P”“O”两个问题。每个提及都出现在“P”“O”中的至少一个中。对于 L 和 AA 列中的每一行,我有一个公式可以分别对每个国家的“P”“O”的每行提及计数(如果没有提及,则为“-”),但这不是动态公式 - 我每次更新范围时,都必须将其复制到提及范围内。

我希望列 L 和 AA 改为包含动态公式。如何更新 AM 和 AN 列中的 Mark 公式以包含 L 和 AA 列中的国家代码?

在 AM4# 和 AN4# 中,我在我的溢出范围 M4# 和 AB4# 上使用Mark 的更新公式,它们产生与我的个人公式相同的结果,除了没有国家代码:

(编辑删除不必要的介绍)

0 投票
1 回答
182 浏览

excel - Excel排序功能“跳过”第一行

我的问题是因为我想对以下问题中提供的数据进行排序:
How to select all the column based minimum date value in a sheet

我想做的是选择数据(Range A1:F9)并对其进行排序:

姓名 卡号 帐号 SBL 交易类型 SBL 交易金额 SBL 交易日期
4779 1 POS 购买 280 02-08-2021
4779 1 POS 购买 1 03-05-2021
小号 1475 2 POS 购买 389 05-04-2021
小号 1475 2 POS 购买 755 05-11-2021
小号 1475 2 POS 购买 1794 05-15-2021
一种 0173 3 POS 购买 1 02-01-2021
一种 0173 3 POS 购买 1 2021 年 2 月 2 日
一种 0173 3 POS 购买 1 02-03-2021

我所做的是选择包括标题的数据=SORT(A1:F9,6),这会导致标题与数据一起排序(当然):

排序标头

然后我想到让 SORT 函数忽略第一行,然后对其余的行进行排序。
我的第一次尝试是=IF(ROW(A1:F9)=1,A1:F9,SORT(A1:F9,6))

尝试1

如您所见,标题工作正常,但排序后的数据包含标题,因为它是排序后范围内的最后一个A1:F9

从排序范围中排除标题行=IF(ROW(A1:F9)=1,A1:F9,SORT(A2:F9,6))也不起作用,因为范围小于输出范围,导致以下错误并且仍然跳过一个数据行:

尝试2

我设法通过在排序范围中插入一个 al 零的替代标题来使其正确,然后使用此函数将排序范围堆叠到标题上(这也为两个行标题留出了空间):

=LET(D,A1:F9,rowD,ROW(D),rowsD,ROWS(D),colsD,COLUMNS(D),H,A1:F1,header,INDEX(D,1,1):INDEX(D,ROWS(H),COLUMNS(H)),subsHeader,SEQUENCE(1,colsD,0,0),subsD,IF(rowD<=ROWS(header),subsHeader,D),sortedSubsD,SORT(subsD,6),IF(SEQUENCE(rowsD)<=ROWS(header),header,sortedSubsD))

但我想知道是否有一种更优雅的方式使用公式对数据范围进行排序而不影响标题。

结果要=LET(data;A1:F9;header;A1:F2;sortCol;6;SORTBY(data;IF(ROW(data)>ROWS(header);1;0);1;INDEX(data;;sortCol);1))感谢 Darren Bartrup-Cook 的贡献。

0 投票
1 回答
141 浏览

excel - 将多维数组转换为溢出范围

我最近发布了很多 Array/Spill Range 答案,试图生成非 vba/App Script 解决方案。但是,我遇到了数组中的数组没有像我预期的那样溢出的情况。这个特定的问题使我发布了这个问题。

我正在解决的问题的概要:

  • 中 5 列数据的起始值A:E
  • OP 想要前四列的唯一列表 ( A:D)
  • Column E将值向右转置。

示例起始数据:

在此处输入图像描述

期望的结果:

在此处输入图像描述

我的解决方案电子表格发布在此处或查看您可以在重复选项卡中编辑的 google 表格版本

我可以很容易地使用前四列

然后我可以使用下面的函数来创建转置值以向右溢出(如上所示)。

我的挑战是让上面的公式溢出匹配前四列。显然我可以将公式向下拖动(这是我的建议),但我怎样才能使这个公式动态地向下溢出,类似于前四列?在我看来,下面的公式应该可以工作,但它会引发错误:

奖励/类似问题:我在这个答案中遇到了类似的问题。如果您能弄清楚如何column E此电子表格中制​​作动态溢出范围,我将支持答案。

0 投票
1 回答
103 浏览

excel - 可以在动态(溢出)范围上执行 sumif(s)并返回(2d)数组吗?

只是好奇是否可以从 excel 中的 sum 或 sumif 公式获得溢出范围输出。给定一个二维数组,我想对一些行求和,但保留列。我担心的是,一旦将 sum 或 sumif 添加到溢出公式(序列、过滤器等),就会失去溢出效应。我这样做的兴趣是在输入表更改大小时保持表自动更新。

一张图片可能最好地描述了这一点:我的表有一些重复标签的行;我想将它们折叠到具有唯一行标签的较短表格中。例如,B 行和 D 行重复,这些行应该在最终输出中求和。(此处示例中的输出是手动完成的,我在输出的每一行/列中执行 sumif。)

非常感谢!

示例图像

0 投票
0 回答
21 浏览

arrays - 计算一列中唯一数字/字符串的数量,但将集合限制为另一列中满足特定条件的行

这: "'=COUNTA(UNIQUE(D2:D724))"' 有效,但现在我想将输入限制为该公式,如下所示:

仅对于在另一列中满足逻辑条件的行,计算此有限集的 D 列中唯一数字/字符串的数量

所以我想在 =COUNTA(UNIQUE(D2:D724)) 中限制设置 D2:D724

我不想为此使用过滤器,我想用公式来做到这一点。

0 投票
0 回答
38 浏览

arrays - 如何在 excel 的 COUNTIFS 函数中使用溢出范围作为条件?

我试图在 COUNTIFS 函数中使用溢出范围作为标准,但我得到的结果是一个空白的溢出范围,它没有按照我想要的方式工作。

因此,如果 [Originator] 和 [Beneficiary] 下的值与固定溢出范围 $BQ$40# 中的任何值匹配,则我希望代码在 [Base] 列下吐出相应的值,[IN/ OUT] 匹配“IN”,[Type] 列下的值匹配工作表 IP 中固定数组 $BW$3:$BW$30 中的任何值,[Channel] 列下的值匹配固定数组中的任何值工作表 IP 中的数组 $BX$3:$BX。否则,它应该只将单元格留空。

我使用了这个代码,它位于从单元 CA30 到 CA100 的工作表 PA 中。

=IFS(Table23[@[Date]]="","",COUNTIFS(Table23[@[Originator]],$BQ$40#,Table23[@[Beneficiary]],$BQ$40#,Table23[@[IN/OUT]],"IN",Table23[@[Type]],'IP'!$BW$3:$BW$30,Table23[@[Channel]],'IP'!$BX$3:$BX$30),Table23[@[Base]],TRUE,"")

我在这里做错了什么?我该如何解决?任何帮助将不胜感激。TIA。