问题标签 [array-formulas]

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 投票
2 回答
141 浏览

excel - 忘记了如何实现这一点:基于查找值的数据不同计数

请参阅下面的答案。

我记得不久前用数组公式解决了这个问题,但我再也没有原来的工作簿了,答案完全让我无法理解。

这是示例数据:

我想做的是用 Bob 和 Bill 已售出的 DISTINCT 商品的数量制作另一张表。IE:

我记得使用数组公式技巧IF来构建基于查找值的数组,但是对于我的一生,我无法弄清楚我是如何将不同的计数应用于后续数组的。这与 有关FREQUENCY,但这仅适用于数字,当我尝试仅数字时,我什至无法复制它。在这里,我玩过SUM(1/COUNTIF(RANGE,RANGE))SUMPRODUCT(1/COUNTIF(RANGE,RANGE))

具体来说,在 Bill inD2和 Bob 在的情况下,D3我得出了这个数组公式(放在E2and中E3):

{=SUM(IF($A$2:$A8=D2,1/COUNTIF($B$2:$B8,$B$2:$B8)))}

(D3 显然取代了单元格中的 D2 E3。)

不过,这还很遥远。我正在使用 Evaluate Formula 来跟踪它,我可以看到COUNTIF计算每个项目的所有出现,而不仅仅是属于查找的那些。

任何指向正确方向的指针?考虑到我过去破解过一次,这真的很令人沮丧。

(我意识到使用 Excel 2013 可以Distinct Count在数据透视表中执行此操作,但出于几个原因,我需要在此处之外执行此操作。)

提前致谢。

编辑 - 找到它 - 请参阅下面的答案

0 投票
1 回答
94 浏览

arrays - 在特定逻辑要求中匹配 excel 数组

我想创建一个公式,从数组的右侧开始识别第一个“非 NA”(即数字),然后返回在数组中发现的第一个“非 NA”的行号:

我尝试使用这个公式:

在这种情况下,它返回第 2 行。

但是如果数组是这种形式:

该公式将返回错误。

同样,如果数组采用这种形式:

该公式返回正确的第 4 行。

因此,我需要有关此公式的帮助。非常感谢。任何建议表示赞赏。

0 投票
1 回答
80 浏览

excel - 连接后匹配数字的Excel公式

在此处输入图像描述

在上图中,我想检查输入 1、2、3 和 4 在哪一行匹配。所以在这个例子中,我想要结果 3,因为它有“1 1 0 0”,顶部的框也有“1 1 0 0”。

我尝试了以下数组公式,但它不起作用。

=IF((C10:C25=C3) (D10:D25=C4) (E10:E25=C5)*(F10:F25=C6),G10:G25,"")

如果可以在不使用任何中间结果列的情况下完成此操作,那就太好了。

0 投票
2 回答
22526 浏览

google-sheets - 带有arrayformula PLUS返回值乘法的Google电子表格vlookup

我的 VLOOKUP 与 ArrayFormula 一起工作,这要归功于 Adam (AD:AM) 出色的解决方案(https://productforums.google.com/forum/#!searchin/docs/parallel$20lookup$20solution/docs/36A0epDlIdE/qnywZst0DioJ )

所以在 col J 这就是我所拥有的:

效果很好。但是,我想从 col J 中的该公式中获取返回值,并将其与 I 行中的 Qty 值相乘。

显然我可以在 col K 中添加一个额外的辅助列...

...但我希望避免在我的查询结果中添加另一列,特别是因为 col J 中返回的结果在工作表上没有可见的目的 - 它们仅用于数学目的。

我尝试了多种方法将该公式滑入 col J 中的 ArrayFormula / VLOOKUP 函数,但到目前为止我还没有运气。

也许它无法完成(?),或者也许我可以从看待这个问题的全新视角中受益。

0 投票
1 回答
5194 浏览

excel - How to find the maximum value in entire Excel workbook

I have an Excel workbook with many sheets (today, about thirty, and growing every day). Each worksheet is named for the date of the data it contains (e.g., 02-10, 02-11, etc.). In cell A2 of each worksheet is a number, and I want to write a formula that looks at cell A2 in every worksheet, and returns the largest one.

I created a list of the current worksheets and named it DayWorksheets, and I attempted to get the value using the formula

{=MAX(INDEX(INDIRECT("'"&DayWorksheets&"'!A2"),0))} (brackets shown to denote array formula).

But the result every time is "10," which is the number in cell A2 of the first worksheet in the named range (and it's not the largest). What am I doing wrong here? I've seen a few other formulas around, the likes of

=VLOOKUP(C1,INDIRECT("Sheet"&MATCH(TRUE,COUNTIF(INDIRECT("Sheet"&ROW(INDIRECT("1:10"))&"!A2:A100"),B1)>0,0)&"!A2:B100"),2,0),

but I don't quite understand the purpose of the countif function in there. Any help would be appreciated.

0 投票
1 回答
87 浏览

excel - 和积公式

我有两张原始数据和摘要。我需要帮助来编辑我在我的 VBA 代码中使用的公式。我正在寻找多个条件的一个特定 ID 的总和。总之,唯一的 ID,我已经有了这个工作正常的公式

=SUMPRODUCT(('Raw Data'!$A$2:$A$3457=A2)*('Raw Data'!$D$2:$D$3457={"HAUD","AANZ","CSHK","HCNY","CHN1,CHN2","IN1","DBIN","CSJL","CTOK","BTK","K01","MYFM","MYPB","HNZD","BNZD","PKDB","HSBP","SCS","SCTW","SCT","SCT"})*('Raw Data'!$F$2:$F$3457="BLF")*('Raw Data'!$G$2:$G$3457))

“G”列中的总和还应包括 D 列中以“TW”或“K”开头的单元格

我试过了,但它不工作 =SUMPRODUCT(('Raw Data'!$A$2:$A$3457=A2)*(LEFT('Raw Data'!$D$2:$D$3457,2)="TW"))*(LEFT('Raw Data'!$D$2:$D$3457,2)="K"))*('Raw Data'!$D$2:$D$3457={"HAUD","AANZ","CSHK","HCNY","CHN1, CHN2","IN1","DBIN","CSJL","CTOK","BTK","K01","MYFM","MYPB","HNZD","BNZD","PKDB","HSBP","SCS","SCTW","SCT","SCT"})*('Raw Data'!$F$2:$F$3457="BLF")*('Raw Data'!$G$2:$G$3457)

非常感谢您的帮助

下面的一个也试过它显示空白所有“,”替换为*仍然显示空白

=SUMPRODUCT('Raw Data'!$G$2:$G$3457,--('Raw Data'!$A$2:$A$3457=A2),(LEFT('Raw Data'!$D$2:$D$3457,2)="TW")+(LEFT('Raw Data'!$D$2:$D$3457,1)="K"),--ISNUMBER(MATCH('Raw Data'!$D$2:$D$3457,{"HAUD","AANZ","CSHK","HCNY","CHN1","CHN2","IN1","DBIN","CSJL","CTOK","BTK","K01","MYFM","MYPB","HNZD","BNZD","PKDB","HSBP","SCS","SCTW","SCT","SCT"},0)),--('Raw Data'!$F$2:$F$3457="BLF"))

0 投票
1 回答
91 浏览

excel - 高级 Excel 公式

我有一个包含 25,168 行的 Excel 电子表格。每行代表具有唯一客户编号和美元金额的客户。一位客户最多可以在 31 个不同的行中出现 31 个不同的时间。如果我根据我们的客户 ID 号对这个列表进行排序,A2-A24 可能是客户号 123,A25-A33 可能是客户号 479,依此类推。

我想创建一个公式,为包含相同客户 ID 号的所有行生成每行中的总金额。例如,如果客户 ID 号 123 出现在 A2-A5 行中,并且与这些行关联的美元金额为 B2=$1、B3=$2、B4=$3 和 B5=$4,我希望公式对 B2-B4 求和对于客户 ID 号 123,显然是 10 (1+2+3+4)。

0 投票
4 回答
4667 浏览

google-sheets - 谷歌表格 - ArrayFormula 计算与先前单元格的差异

使用 Google 电子表格,我希望能够将公式放入标题列,这样我就不必手动填充行(我有一个每天自动添加值的 Google 脚本)。我知道执行此操作的常用方法是使用 ArrayFormula。

我有一些我想像这样设置的公式,但现在我试图找出当前单元格和前一行单元格之间的差异。

这是它应该做的:

Bal Dif 0 20 20 20 0 21 1 22 1

我可以用 ArrayFormula 得到的最接近的是:

Bal Dif 0 20 20 0 20 1 21 1 22 1

这是使用公式:=arrayformula(D2:D-D1:D)。它几乎就像我需要=arrayformula(D1:D-D0:D)但显然这是无效的。

有什么好的方法可以获取实际具有新值的线上的差值?

谢谢,希望有人可以帮忙。

0 投票
1 回答
7705 浏览

google-sheets - 链接列,以便正确反映数据更新

我有一列包含数据值,我想将它链接到相同和不同工作表中但在同一个电子表格中的其他列。也就是说,在电子表格的不同列中具有相同的数据,同时保持所有链接,因此源数据的更新会影响所有数据。

我试过:

(例如=Sheet1!A:A)但是,尽管它有效,但它是单元格引用而不是列引用。

实现它的最佳方法是什么?

0 投票
2 回答
225 浏览

javascript - Force Google Script array formula to re-calc (emulate CTRL+E)

I did find a couple other spots on this, but no answers (or old answers where hopefully things have changed).

I simply want to put a formula in a Google Sheet cell (via a script) and have it fully refresh/recalc. The problem is, the formula returns an array of values, as in:

I can make everything work up to the point of placing the formula in the cell I want and selecting that cell. But I still need to manually press CTRL+E to make the array fill in (it is a summary of how many bottles in my beer collection belong to each brewer).

I have tried all the "flush" and re-calc commands I have been able to find via research, and nothing makes the formula "take". Alternately, I looked for a brute force solution -- send a CTRL+E to the cell as if I had pressed the keys myself -- but was unable to find anything that can do something like a Visual Basic "SendKeys" or a Visual Foxpro "KEYBOARD" command.

Here is the Google Script code behind a button that calls "refreshBrewerTable()":

Any ideas? I basically want to have a button that will refresh this pivoted summary data as I add new beer bottles to my walls.