Tag: 数组

如何将variables值向下舍入到数组中的下一个最小数字?

我正在使用VBA在Excel中处理macros。 我有一系列的数字,如: 180, 190, 300, 390, 400, 430, … 然后,我有一个值为307或389或425的variables。 我怎样才能将这个数字下降到数组中包含的下一个最低的数字,而不使用一堆If语句? 例如,我需要改变: 307 -> 300 389 -> 300 425 -> 400 比使用一长串逻辑语句更快的方法是做什么?

表sorting和查找

我有一个Excel表格(25×25),看起来像这样, C1 C2 C3 R1 5 6 7 R2 1 7 9 R3 2 3 0 我的目标是使它看起来像这样, C3 R3 0 C1 R2 1 C1 R3 2 C2 R3 3 C1 R1 5 C2 R1 6 C2 R2 7 C3 R1 7 C3 R2 9 它会生成一个按照第一个值sorting的新表。 它还告诉相应的列和行的名称。表格有重复,负数和小数。 我这样做是因为我想find一个给定值的3个最接近的候选人(以及因此的C和R)。 而VLOOKUP()需要一个sorting表。 另一个问题(向前一步)是VLOOKUP()返回最接近的较小的值,而不是实际上最小的值。 有没有更好的方法来做到这一点或解决方法? 所以结果就是这样一个整洁的桌子, Value to look up […]

当数字重复自己时,如何find数组中第n个最低的数字?

我正试图在这个列表中find第二低的成本。 显然,它是547美元,但是当我把公式放在:= SMALL(F2:F31,2)时,我得到了$ 488.00,我猜这是因为$ 488重复了多次,所以它是第二个数字数字列表是最小的? 尽pipe重复,我应该input什么公式来获得第二小的数字?

加快arrays公式

我有以下的公式,我将在下面解释: {=SUM(IF(($G$1:$L$1=$O$1)*($G$2:$L$2=$O$2)*($G$3:$L$3=$O$3)*($G$4:$L$4=$O$4)*($G$5:$L$5=$O$5)*($G$6:$L$6=$O$6)*($G$7:$L$7=$O$7);G21:L21))} 这是工作表的样子: 在G-L列下,我们有一个所有数据的“数据库”。 这些列将每季度累积增加(每季度约30列)。 所以几年后,我们结束了一堆数据库列(1000 +原始数据列)。 为了演示,我只包含了这6列。 正如你所看到的,每一列都包含了1-7行之间的特定参数,允许识别特定的国家代码+项目代码+类别+会计年度,+ …(等)。 这使我们能够追踪一个独特的特定项目并检索其数据。 我们之后在列O上的是一个特定的项目,我们试图为其检索值(您可以看到第1 – 7行与第G列(我们试图为这个特定项目检索值)相同。 这是我们的公式。 我已经附上了。 这是按F2时的样子。 正如您所看到的, IF语句首先检查特定列是否与列O下的预定义条件相匹配,并将所有满足1-7行之间所有条件的列相加。 现在是这个问题。 我们有一个工作表,其中包含20个项目(如列O),我们正在使用这个数组公式来检索值。 问题是用这种方式检索数据需要很多时间。 我们还采用了一个通过VBA的原理,我们遍历所有的单元格,然后插入一个公式,计算数组单元格,然后我们复制粘贴结果值里面(这样我们不会结束整张数组公式)。 然而,计算(1分钟左右)仍然需要长时间。 我想知道,如果有一个更好的解决scheme如何检索已经提到的格式的数据(这意味着我们有一个特定的标准,我们试图find)? 也许SUMIFS可能会更好? 或者是产品? 甚至完全不同的解决scheme? 我愿意接受任何能够加快这一进程的提案。

在基于VBA中另一个工作表中的值使用数组的数组时,无法过滤出一个工作表上的行

我的意图是有以下代码从我的“低CPM 1”工作表中编译数据到一个数组,然后过滤我的活动工作表基于此数组。 虽然macros似乎影响filter,但没有任何值被过滤掉。 任何帮助这个问题将不胜感激 Sub Macro1() Dim CPM1Array(0 To 300) As Variant For i = 2 To UBound(CPM1Array) CPM1Array(i) = Sheets("Low CPM 1").Cells(i, 2).Value Next i ActiveSheet.Range("$A$1:$H$251").AutoFilter Field:=3, Criteria1:=("<>1 to Ubound(CPM1Array)"), Operator:=xlFilterValues End Sub

Excel VBA – 如何使用单个命令从3Dmatrix中复制2Dmatrix内容?

我有一个3Dmatrix,其中包含我想要使用以下命令在一系列单元格中写入的内容: Worksheet.Range(Worksheet.Cells(RowStart, ColumnStart), Worksheet.Cells(RowEnd, ColumnEnd)).Value = MyData 问题是MyData的数据实际上是由3Dmatrix的第一维的index = 2来描述的。 由于我没有看到在这里使用Application.WorksheetFunction.Index的可能性,所以我想将3Dmatrix的整个特定索引的内容复制到2D中。 这是可能的,而不必诉诸For循环(或写一个子程序)?

使用VBA在Excel 2007中的不同单元格中填写不同的string值

我试图在四个不同位置(我试图把“AZ”和“0-9”放在单元格中: A1到D9 , E1到H9 , A10在2007 Excel表格中填写值“AZ,0-9”到D18 ,和E10到H18 )。 到目前为止,我有这样的代码: Sub TwoDArrays() Dim Matrix(9, 4) As Variant Dim Matrix2(9, 4) As Variant Dim Matrix3(9, 4) As Variant Dim Matrix4(9, 4) As Variant Matrix(1, 1) = "A" Matrix(1, 2) = "B" Matrix(1, 3) = "C" Matrix(1, 4) = "D" Matrix(2, 1) = "E" Matrix(2, 2) = […]

Excel VBA:使用二维数组数据填充交错范围

目前,我正在通过VBA寻找一种更有效的方法,以将从一个Sub内的二维数组传输的信息转换为Excel工作簿中交错的一组范围。 我在下面的例子中提炼了我需要的东西,并附上代码。 任何帮助将不胜感激。 我已经链接了描述我正在使用(input,数组和输出)的示例的图像,并且编写了我在下面使用的代码示例。 为了简单起见,让我们在工作簿中将“input表”定义为Sheet1和“Sheet Sheet”作为Sheet2: Option Explicit Sub TransferData() Dim myArray as Variant 'Define the array to hold the data. Dim i as integer 'Define a generic loop counter variable. myArray = Sheet1.Range("A1:F7") 'Pulls all the relevant data into the array. myArray现在看起来完全像范围。 (我会张贴第三个链接,但我需要先获得更多的代表)。 我想将数据传输到我的输出文件,使它看起来像这样: 以下是我目前正在处理的情况: For i = 1 to ubound(myArray) Sheet2.Cells(i,1) = myArray(i,1) […]

Excel VBA – 将一个数组数组的值移动一个常数而不循环

有没有一种方法可以添加一个常数到Excel VBA(Excel 2007)中的一个数组数组没有循环? 例如,我有以下数组: MyArray = (1,2,3,4,5) 我想获得: MyArray = (2,3,4,5,6) 没有循环。 在电子表格中,如果值位于单元格A1:A5 ,则可以selectB1:B5并input数组公式{=A1:A5+1} MyArray = MyArray + 1 似乎不起作用(types不匹配错误)。 有任何想法吗?

删除VBA数组中的重复项

代码正常工作。 基于回应帮助修改。 我有以下代码从数组,MyArray中删除重复项。 该代码得到一个debugging错误: d(MyArray(i)) = 1 。 错误是下标超出范围。 不知道是什么导致这个和我的代码有什么问题。 Sub DataStats1() Dim Range1 As Range Dim MyArray As Variant Set Range1 = Application.InputBox("Select Range1:", Title:="Set Data Range", Type:=8) Range1.Select MyArray = Application.Transpose(Application.Transpose(Range1.Value)) Dim d As Object Set d = CreateObject("Scripting.Dictionary") For Each el In MyArray d(el) = 1 Next Dim v As Variant v […]