Tag: 数组公式

如何使用Excel的数组公式为UDF正确读取每个单元格?

天儿真好, 我有一个更多的问题来帮助自己了解Excel的数组公式(Control + Shift + Enter)如何将每个单元格dynamic读入公式。 我做了一个简单的例子来向你展示我的意思。 我创造了一个小型的农场,里面有一些动物,按名字排列,并提供动物的声音。 在下一个专栏中,我创build了一个名为MakesSound的用户定义函数,该函数接受什么动物的input,并响应它所生成的动物的声音。 如下图所示。 不幸的是,我认为一个arrayformula可以拿起我有不同的单元格列出的动物,它结束像这个快照。 所以我怎么能问arrays式识别我在B列有不同的细胞,因为我知道Quacks不是其他动物的答案。 🙂 这里是另一个快照,显示了arrayformulas旁边的公式,以及我使用的代码和代码。 Public Function MakesSound(AnimalName As String) As Variant Select Case AnimalName Case Is = "Duck" MakesSound = "Quack!" Case Is = "Cow" MakesSound = "Moo!" Case Is = "Bird" MakesSound = "Tweet!" Case Is = "Sheep" MakesSound = "Ba-Ba-Ba!" Case Is = […]

在Excel工作表中查找所有数组公式

有没有一种方法来查找给定的Excel电子表格中的所有数组公式?

将公式作为文本处理,而不是数字

我有一个Excel公式从列中读取数据。 该列中的数据有时是类似date的格式,例如“10-11”。 尽pipe事实上我已确保该列是文本格式的,并且所有值均以纯文本forms正确显示,而不是重新解释为date,但公式基本上将其重新解释为引用中的date。 我需要一种方法来强制公式的单元格引用将单元格解释为文本。 我尝试了TEXT(A1,“@”),但它不起作用 – 它给出了date的数字值。

将数组公式的文本结果转换为可用的格式

当数组公式的结果是数字时,我发现通常很容易find合适的方法将数组合并到一个结果中。 然而,当一个数组公式的结果是文本,我发现很难操纵公式的方式提供了一个单一的预期结果。 总之, 有没有一种方法来处理我忽略的文本结果数组? 看到这个问题的底部,最后的期望公式不起作用,并要求解决scheme。 *编辑 – 再次阅读后,我可以交替总结我的问题:有没有一种方法来访问“公式数组结果”,而不是单独select(例如:与INDEX)多个文本元素? Array Formulas工作的示例,其中Result Array是数字值 (1)示例1:假定列A行1-500是产品ID的列表,格式为xyz123,列B行1-500显示该产品的总销售额。 如果我想find销售额最高的产品的销售额,那么ID的最后3位数字在400以上,我可以像这样使用数组公式(按CTRL + SHIFT + ENTER而不是ENTER键确认): =MAX(IF(VALUE(RIGHT(A1:A500,3))>400,B1:B500,"")) (2)示例2现在假定列B包含产品名称而不是销售。 我现在想简单地返回与产品ID的最后三位数字大于400的条件匹配的名字。这可以如下完成: =INDEX(B1:B500,MIN(IF(VALUE(RIGHT(A1:A500,3))>400,ROW(A1:A500),""))) 在这里,我已经做了一些操作,以便公式[IF(RIGHT(A1:A500,3 …)]的实际数组部分返回值结果[单元格A1:A500的行的最后3位数大于400];因此我可以使用MIN来显示只匹配的第一个ROW#,然后我可以在一个普通的INDEX函数中使用这个折叠的结果。 (3)例3对于最后一个例子,请看这里的类似问题的讨论[比我下面的总结示例更深入,与这个问题没有直接关系]: https : //stackoverflow.com/a /五百○九万○二十七分之三千一百三十二万五千九百三十五 现在假设您想要一个所有产品名称的列表,其中产品ID的最后3位数字大于400。 据我所知,这不能在一个Cell中完成,只能通过将每个单独的结果放在一个后续的单元上来完成。 例如,可以在C1中放置以下公式,并向下拖动10行,然后显示产品ID的前3位数字大于400的前10个产品名称。 =INDEX($B$1:$B$500,SMALL(IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($A$1:$A$500),""),ROW())) 数组公式不起作用,其中结果数组是文本值 现在假设我想要在示例3中获得结果,并对它们执行一些文本操作。 例如,假设我想将它们连接成一个文本string。 下面是不行的,因为连接不会像这样的结果数组作为可接受的参数。 =CONCATENATE((IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($B$1:$B$500),""))) 所以问题是 :有谁知道如何得到这个最后的公式工作? 或者,如何获得一个公式来处理需要一系列文本结果的公式,并将其转换为“可用范围”[因此可以插入上面的Concatenate中],或者可以立即使用文本参数进行处理[如mid ,search,替代等]? 现在我可以看到的唯一方法是使用上面的例子3,然后进一步说,例如,连接(C1,C2,C3 … C10)。

用条件计算唯一值

在AI列中有不同名字的列表。 在B列中,我的值是0或1。 我想要计算列B中具有1的所有唯一名称的计数。 使用下面的数组公式可以计算唯一的名字,但是不能在列B上应用条件。 =SUM(1/COUNTIF(A:A,A:A))