Tag: 数组

Excel VBA函数:如何传递范围,转换为数组,反转,并返回数组

我想在Excel中做一些数组math,这需要我反转一定数量的一维范围,所以我想为它写一个函数,而不是在电子表格中创build反转。 我在VBA中写了一个reverse()函数,但是它返回#VALUE! 电子表格中的错误。 无论数组大小,也不pipe是input相同大小的数组函数,还是使用SUM()这样的汇总函数,都会发生这种情况。 我证实了倒车逻辑作为一个子。 这导致我相信问题是传递/返回范围/数组,但我不明白什么是错的。 Function reverse(x As Range) As Variant() ' Array formula that reverses a one-dimensional array (1 row, x columns) Dim oldArray() As Variant, newArray() As Variant Dim rows As Long: i = x.rows.Count Dim cols As Long: i = x.Columns.Count ReDim oldArray(1 To rows, 1 To cols), newArray(1 To rows, […]

Excel – 带有间隙的数组公式

目前我有这个公式作为一个数组公式的工作很好,以确定两个数组之间的差异的最大值: {=MAX(ABS(D3:N3-AW3:BG3))} 我试图从两个数组的中间排除一对值(分别是L3和BE3 )。 这不起作用: {=MAX(ABS(D3:K3;M3:N3-AW3:BD3;BF3:BG3))} 我得到了“太多争论”的错误; 从ABS函数的angular度来看,错误是有意义的 – 因为分号是参数分隔符。 但是,如何处理数组中的间隙(即非相邻单元)呢?

做一个数组公式查找

我有这样的数据列表: Name | Number Bob | 300 Joe | 200 Jane | 400 Sisqo | 450 Jill | 500 大约有62行,所有的数字可以不同,有些重复。 我的目标是基本上添加一个包含所有400人以上的列表的列。 所以看起来像这样: Name Jane Sisqo Jill 我拥有的是: {=iferror(INDEX($A$2:$B$6, SMALL(IF($B$2:$B$6 >= 400, $B$2:$B$6,), ROW(1:1)), 1), "")} 我想这是做的:1)小函数在范围b2:b6,因为这是一个数组公式,查看每个单元格在B2:B6看它是否大于或等于400. 2)我不不知道究竟是怎么做的,但是我希望行函数只有在所考虑的单元格中的值大于或等于400的情况下才能findb2:b6的数组。如果找不到任何东西,则不会有任何反应。 3)然后运行比较小(b2:b6,1)为该范围内的最低值。 然后当复制下来,因为我使用row()函数,它会很小(b2:b6,2),小(b2:b6,3)等等。 此时应该find最低数字在400或更低的那一行。 那么索引函数应该读取 index(a2:b6, 3, 1) 为第一个。除了我只得到 名称 Bob Bob 那么错误在哪里?

在MATLAB中定位大单元arrays中的多个零值

我在编写MATLAB代码时遇到了一些麻烦,这些代码需要定位我的一个单元格数组vel_data的每个单元格的vel_data ,这是一个1×430单元格,包含多个由M行x 1列组成的数据的excel表单。 我想提取最大值,以及该最大值之前和之后的每个值,直到第一个0到达一个新的单元arrays。 例如,如果数组中的第一个单元格是[3 2 1 0 2 6 4 3 0 1 0]那么它将提取值[0 2 6 4 3 0] ,并为数组中的每个单元格执行此操作。 我知道以下提取的单元格arrays的最大值,但我希望它能做到我上面提到的。 d=dir(f); for n=1:numel(d) max_vel{n} = deal(max(vel_data{n})); end 任何build议/示例代码将非常感激。

Excel将2d范围转换为1d范围以用于function

令人惊讶的是,search谷歌的答案 ,以及这个网站,导致这个问题没有明显的答案,所以我想我会张贴它。 我试图创build一个macros(可能是一个UDF)将2维单元格范围(如A1:C3)转换为1维范围(像A1:A10列或行)。 当需要二维数组时,这将用于诸如MATCH()函数,例如在A1:C3中查找特定值。 但是我希望这个function是多function的,这样我就可以把它放在任何二维数组中,使它成为一维。 如=INDEX(ARRAYDIMENSION(A1:C1),4)或=MATCH("hello",ARRAYDIMENSION(A1:C1),0) 我已经想出了一个讨厌的方法 。 我在一个新的工作表中为我的数组(对于A1:C3 ,即A1:A3 , B1:B3 , C1:C3 )的每一列进行拍打(所以A2被复制到新工作表的A2中,C3被复制到A9,B1 A4等) 然后返回我的新数组( Sheet2!A1:A9 )的引用,所以MATCH()或INDEX()或任何现在看起来那里。 它工作但有一些明显的缺陷; 添加一个新的表是macros观和丑陋的时间消耗,堆叠在一起的单个列不能是最有效的方法。 但特别是,macros编辑工作表,所以不能成为一个UDF(我不认为),这意味着我不得不使用它作为一个Worksheet_Calculate子,这是不是只是把它放在任何公式需要它。 我认为这是相对清楚的,请帮助/build议最好的方法,我只有几个星期的VBA,所以我还没有超级光滑。

保存一个大单元arrays作为单独的input文件MATLAB

我有两个单元格arrays一个命名文件名,这是一个1x430arrays包含一个文件名string,例如第一个和第二个单元格是“一月一日2016”,“一月二十六号”…几个Excel数据表。 第二个单元格数组max_vel是一个1×430数组,其中包含与这些date分别对应的双精度数据,例如,max_vel中的第一个单元格包含2016年1月1日起的数据。 是否可以编写一个代码来保存单元格数组max_vel的每个单元格,使其对应于与单元格数组文件名相关联的名称作为input文件? 我期望的输出是1×430单元arrays中的每一个double_max_vel都被保存为一个单独的input文件及其关联的文件名。 例如max_vel {1,1}保存为2016年1月1日.inp,max_vel {1,2}保存为2016年1月2日.inp等。 谢谢!

我如何将单元格数组转换为数组在Matlab中?

我已经从Matlab的Excel文件中读取了一些数据。 单元arrays已经生成如下: x={'11', 'NaN', 'NaN', '13', 24} 我想将单元格数组转换为数字matrix(用于其他所需的计算),并将数字matrix中的“NaN”元素转换为零。 我该怎么做? 谢谢。

将范围内的数据传输到数组,删除最后一行

我试图把工作表中的信息放入一个数组中,使用: WBArray = ActiveSheet.Range(Cells(5, 1), Cells(end1, 29)).Value 但有几个问题:首先,我的原始范围的最后2行包含无用的数据。 我怎么能删除这两行,因为我把它们传递给数组? 有没有像我正在使用的直接方法? 其次,我的范围从第5行开始,但由于它必须通过旧文件,这个数字可能会有所不同。 有没有办法我可以做一个浮动引用,所以它根据我想要的数据开始的地方变化? (例如,如果它从第7行开始)。 我已经试过循环每个项目,但是这似乎也没有工作。 有任何想法吗?

EXCEL查找最小值与多个条件

我有一个问题,想出一个公式来查询特定date(表2,C栏)的特定产品的最小值,并返回商店的名称(表2,D列)。 Sheet2中 样本数据集如下所示: Sheet1 我需要一个公式(对于列C和D中的每一个),这将允许我复制该行,并给我某个产品在某个date的最低价值。 我最初的想法是列D是一个数组公式和INDEX,MATCH和MINIFS。 但是,我不确定C列的公式。我正在考虑VLOOKUP,但不知道如何select给定产品的适当价格arrays。 先谢谢你

在Excel中的数组中使用Averageif for 2条件

我试图使用Averageif(s)公式为一个数组有两个标准的数据是在列表forms,与技能(即,SAP,C列),公司(即Facebook,D列),和率(即E栏25美元)。 我希望find每种技能的平均速度,并符合以下标准: averageif公式将忽略0s,以便不偏斜平均值 averageif公式将采取每个技能的平均值。 到目前为止,我试过=AVERAGEIF($C$7:$C$138,C7=$C$7:$C$138,$E$7:$E$138)但它显示#DIV/0错误。 如何将标准#1纳入公式? 谢谢!