Tag: excel formula

VBA – UDF处理数组的方式不同

这个代码是我正在工作的一小部分。 我已经把问题缩小到了下面的内容。 我有这个UDF SampleFunction,我需要传递一个数组{3; 4}作为唯一的参数。 Function SampleFunction(InputVar As Variant) As Integer SampleFunction = InputVar(LBound(InputVar)) End Function 我以两种不同的方式调用这个UDF。 首先,通过VBA 情况1: Sub testSF() MsgBox SampleFunction(Array(3, 4)) End Sub 其次,通过我的Excel工作表 案例2: ={SampleFunction(ROW(3:4))} – >即作为数组函数。 问题: UDF适用于案例1,即通过VBA进行的调用,当我通过excel工作表调用时,它给出了案例2的#VALUE错误。 我在Lbound(InputVar)情况下使用了F8的functionLbound(InputVar)计算结果为1(与从案例1中的sub调用的不同,它的计算结果为0),而InputVar(Lbound(InputVar))显示“超出范围“错误的情况2。 我只想知道如何从工作表中调用SampleFunction函数 ,即Case 2,以便它具有与上面的Case 1相同的行为。 作为奖励,如果有人可以解释为什么在上述情况下, Lbound(InputVar)评估方式不同,那将会很不错。 其他一些细节: 我正在构build一个UDF来执行一些正则expression式操作。 上面的InputVar参数将是一个数组{x; y; z; …},指定xth,yth,zth …的出现次数。 InputVar的数据types保持为Variant,因为我希望能够将数字(作为一个长度数组),数组或范围(取入并转换为数组)传递给该函数。 提前致谢!!

如何比较Excel中的两列,如果匹配,则复制旁边的单元格

我已经尝试了=IF(ISNUMBER(ISMATCH(D2,G:G,0)),H:H,"")来匹配一个键的数字,这里是我的规则: Column D (从D2开始)与Column G匹配(也从D2开始) 如果匹配,则将通过Columns D and G匹配的Column H中的单元格复制到Columns E 有没有办法做到这一点与公式? 概要 列E在开始时是空的,我想将列H的内容复制到这个列中,但是只有当行与列D和G匹配时才行。

有条件计数过滤的范围

我有一个大约一百万行的工作表。 在一个特定的专栏中,我有从0到50,000数字。 我试图确定,在一个过滤的范围内,有多less个滤波范围内的单元落在一个特定的值内。 我可以轻松地做一个=COUNTIF(L:L, "<5000")来查看有多less行less于5,000,或者=COUNTIFS(L:L,">500",L:L,"<5000")看到在两个数字之间的TOTAL范围内的数字,但我无法弄清楚如何做一个过滤的范围中的任何一个 。 通常使用过滤的数据,我使用=SUBTOTAL函数,但是我看不到任何既定的=SUBTOTAL函数在这个例子中是如何工作的。 有任何想法吗?

ROW()函数在SUM()和SUMPRODUCT()

问题定义: 在单元格A1input任何数字。 现在在第一行的任何地方尝试下面的公式。 =SUM(INDIRECT("A"&ROW())) 和 =SUMPRODUCT(INDIRECT("A"&ROW())) 第一个公式评估,第二个公式给出一个#VALUE错误。 这是由SUMPRODUCT() ROW()函数的行为不同造成的。 在第一个公式中, ROW()返回1 。 在第二个公式中,即使公式尚未作为CSE公式input,也会返回{1} (一个长度的数组)。 为什么会发生? 背景 我需要评估一个types的公式 =SUMPRODUCT(INDIRECT(*range formed by concatenation and using ROW()*)>1) 这正在解决一个错误。 作为解决这个问题的一个解决方法,我现在计算ROW()在另一个单元格中(显然是在同一行),并在我的INDIRECT()内连接起来。 或者,我也尝试封装在一个sum函数内,像SUM(ROW()) ,也可以。 如果有人能够解释(或者指出一个可以解释的资源),为什么ROW()返回SUMPRODUCT()一个数组而没有被CSEinput,我肯定会很感激。

如何使用空白单元格作为参考执行sumif?

请参阅下面的示例数据: Time Date Result 00:21.6 10/1/2012 1:43 FALSE 01:47.7 10/1/2012 2:13 FALSE 00:56.7 10/1/2012 2:49 FALSE 00:54.9 10/1/2012 3:43 00:11.8 10/1/2012 3:43 02:10.9 10/1/2012 3:46 FALSE 01:05.4 10/1/2012 3:58 FALSE 00:55.8 10/1/2012 4:53 04:41.8 10/1/2012 4:52 00:26.3 10/1/2012 4:58 00:04.2 10/1/2012 4:58 00:15.3 10/1/2012 4:59 00:06.4 10/1/2012 4:57 00:10.7 10/1/2012 4:56 00:04.4 10/1/2012 4:56 00:04.2 […]

Excel公式获得月份周数(周一)

使用Excel的公式,我需要从一个给定的date月份得到星期数。 但是,条件是它应该在星期一。 周一到周日是工作日。 我试过这个: 但是,星期数是5,因为它应该是4,因为2013年11月1日是星期五,所以它将在10月份的上周计算。

在Excel中使用vba设置总和公式

工作在一个Excelmacros,我试图从上面的单元格中添加单元格值来计算总值。 这是我的数据看起来像 这里我想为每列添加上面的单元格值来计算总和。 为了完成这个我写了一个macros如下。 For cl = 2 To 5 Worksheets(5).Cells(4, cl).Formula = "=SUM(B4:B6)" Next cl 这应该将公式设置为连续的5个单元格中的每个单元格。 但它在一行中的所有单元格上设置相同的公式,它应该根据列进行更改。 如何设置相应列的每个单元格的总和公式?

Vlookup并获取最小值(date)

顶部表格是input,底部表格是要求输出的预览。 对于每个ID我需要find最早的date时间。 我还需要其他栏目的其他信息(请参阅下图)。 我目前的解决scheme是:在单元格E2 =A2 单元格E3向下拖动=IF(E2<>A3,IF(E1=A3,"",A3),"") 在单元格F2中向下拖动=IF(E2<>"",MIN(IF($A$2:$A$14=E2,$C$2:$C$14)),"") Ctrl + Shift + Enter

将SUMIF与部分查找进行匹配

我想做一个SUMIF的种类…但我想要的标准是匹配单元格的一个子集。 即我有客户商店: Nike – Melbourne Nike – Sydney Nike – Brisbane Adidas – Melbourne Adidas – Sydney Adidas – Brisbane Reebok – Melbourne Reebok – Sydney Reebok – Brisbane 我想要做的是将所有店铺的每月价值相加 – 我有许多店铺,有很多地方 – 我想把所有类似的商店合并成一个单一的数字。 我创build了一个新的列,只是: Nike Adidas Reebok 我想要sumif和总结所有的商店“CONTAINS”耐克和商店“CONTAINS”阿迪达斯每月价值。 目前,SUMIF与单元格内容完全匹配 – 我如何进行部分匹配?

IFERROR,INDEX,MATCH返回零而不是空格

我使用下面的公式: =IFERROR(INDEX('Cleaned Post'!W:W,MATCH(Combined!$C2,'Cleaned Post'!$C:$C,0))," ") 这个公式工作的很好,除了空白单元格,它返回“0”。 我想空白单元格返回为空白。 具体来说,这是我所拥有的 第1页(标题为Cleaned Post) Name Email Age Gender Task #1 Andrew 888@gmail.com 18 1 80 Jason 687@gmail.com 20 1 95 Judy 432@gmail.com 18 2 __ Jack 236@gmail.com 24 1 65 工作表2(题为“组合”) – 我得到的 Email Task#1 888@gmail.com 80 687@gmail.com 95 432@gmail.com 0 236@gmail.com 65 工作表2(题为“组合”) – 我想要的 Email Task#1 888@gmail.com […]