Tag: 数组

Excel索引匹配小 – 公式只能在手动模式下工作

我正在尝试为我的需要调整公式,但由于某种原因,我似乎只能在手动计算模式下才能使其工作。 如果select自动模式,则公式在每一行都返回0。 在本质上,公式是在表格DIL-2018-08-14的列H中匹配基于列I中的蓝色关键字的所有匹配。它们都只在手动模式下工作良好,并且仅在每个单元格手动重新计算之后才起作用。 有人可以build议,如果有避免这种情况,并使其在自动模式下也wortk。 公式是: =IFERROR(INDEX('DIL-2018-08-14'!$H$9:$H$502,SMALL(IF(ISNUMBER(SEARCH(LEFT(I8,FIND(" ",I8)-1),'DIL-2018-08-14'!$H$9:$H$502)),ROW('DIL-2018-08-14'!$H$9:$H$502)-ROW('DIL-2018-08-14'!$H$9)+1),COUNTIF($J$7:J8,"*"&LEFT(I8,FIND(" ",I8)-1)&"*")+1)),"")

返回Excel数组中的所有非错误行

我有一个表(表1),范围D1:F20。 在这个表格中,我有一系列的数据。 表1中的几行在D列的单元中有#N / A。D1:F1是标题。 我想创build另一个表(表2),收集表1中的所有数据,除了那些有#N / A的行。 正如我想到的,我认为这将是一个数组公式,将循环表1中的行,并张贴到表2中没有#N / A。 我已经build立了以下公式: {=INDEX($D$1:$F$20,MATCH(FALSE,ISERROR(D2),0))} 我已经成为一个数组公式,但它不工作。 目前,它只是按照原样返回表1,即包含所有包含#N / A的行。 我怎样才能达到预期的效果?

Visual Basic,VBA数组循环

我用http://www.homeandlearn.org/arrays_and_loops.html来帮助我。 我有过滤到一个表的数据连接。 不幸的是,当程序将文件导出到Excel时,其中一个源随机地将错误的数据(通常是date)放在错误的列(客户端列)中。 我想要做的是类似于索引/匹配function。 我想检查这个主表(A)中的每个预留号码与同一工作簿中的另一个表(B)。 如果来自其他工作表(B)的预订号码与主表(A)中的预留号码相匹配,则希望将正确的客户端值input到主表(A)中。 我还是很新的VBA所以任何帮助表示赞赏。 我试图修改我的代码,但无济于事。 另外,我原本是在没有真实数据的情况下将其作为练习来使用,所以我没有搞乱我的原始文件。 我试图添加适当的语法来引用其他工作表,而不是所以我想这也可能input不正确。 这里是我提出的最接近的原始代码: Sub TransferData() Dim MyArray(1 To 19) As Single MyArray(1) = 81899 MyArray(2) = 87172 MyArray(3) = 87275 MyArray(4) = 87394 MyArray(5) = 87446 MyArray(6) = 87496 MyArray(7) = 87621 MyArray(8) = 87631 MyArray(9) = 87726 MyArray(10) = 87822 MyArray(11) = 87858 MyArray(12) = 88041 […]

在多个工作表中parsing数组

我正在尝试将一张表格中的一系列代号分解为多个表格。 我基本上是试图循环使用“i”variables作为工作表标识符,也是每个工作表中有多less代号的乘数。 任何人都可以发现我在这里做的错误吗? 或者你build议攻击的其他方式? “BreakdownCount”=用户input的分组大小…在这种情况下为200作为testing。 谢谢! For i = 1 To BreakdownCount UpperRange = 8 + (i – 1) * 200 LowerRange = 8 + i * 200 MsgBox UpperRange MsgBox LowerRange Worksheets("Data " & i).Range(Cells(8, 2), Cells(207, 2)).Value = Worksheets("Scanner – ALL").Range(Cells(UpperRange, 2), Cells(LowerRange, 2)).Value Next

使用数组excel vba下拉列表

我试图使用单元格来select不同的数据(从数据validation和select列表)。 列表中的数据来自过滤掉的数据库。 我试图从数据库中获取数据并将其放入数组,然后使用该数组来填充列表。 不知道为什么这不起作用,所以任何帮助表示赞赏。 Sub filters() Dim find As String Dim array1(50) Dim i As Integer Dim j As Integer Dim k As String Worksheets("Email Address").Select find = Worksheets("Sheet1").Range("B2").Value For i = 2 To 400 k = Worksheets("Email Address").Cells(i, 1) If k = find Then array1(j) = Worksheets("Email Address").Cells(i, 2) Else End If Next i […]

是否可以在一个函数内的Excel数组中使用单个单元格引用?

我有一些数据我想放在LOGEST()函数中 (eg x values =0.463, 0.609, 0.887, y values = 0.05, 0.1, 0.2 ) 对于这个例子,我已经把数据放到这些列中: 这两个公式的工作(返回正确的值0.665 …): = INDEX( LOGEST({0.95;0.9;0.8}, {0.463;0.609;0.887}, TRUE, FALSE), 1) 和 = INDEX( LOGEST( B2:B4, A2:A4, TRUE, FALSE), 1) 但是我无法获得公式来调用数组中的单个单元格。 我尝试了一些例如 = INDEX( LOGEST({0.95,0.9,0.8}, {"A2","A3","A4"}, TRUE, FALSE), 1) = INDEX( LOGEST({0.95,0.9,0.8}, (A2, A3, A4), TRUE, FALSE), 1) 和其他一些变化,但我不能擅长将单个单元格值视为数组值。 有没有办法做到这一点,或者是唯一的恒定单元格参考可能的A2:A4? 我问,因为在我的真实数据中,我不能使用这个范围函数,因为我的数据没有以这种forms分布(有空白)。 (注意:如果最终相关,我不希望单元格值保持不变 […]

VBA“参数不可选” – 不确定如何声明variables

我正在尝试编写一个VBAmacros,它通过计算直接在它上面和下面的单元格的平均值,将值分配给特定的单元格。 我正在运行它通过select开发工具栏上的macrosbutton,然后我必须键入我的function(它不出现在列表中)“interpprob”的名称,并select运行。 然后我得到一个popup窗口,指出“参数不是可选的”。 我不太确定问题是什么。 下面是完整的macros。 “tstep”意味着需要更改某些单元格值的一组行的数组。 Function interpprob(f As Integer, d As Integer, spec As String, tstep As Long, above As Long, below As Long, i As Integer, j As Integer) f = 41 d = 441 spec = ETHA tstep(0) = f tstep(1) = f + d tstep(2) = f + 2 * d […]

Excel vba:是否有可能用括号初始化单行的date数组?

我是Excel VBA的新手,无法使用括号初始化单行上的date数组。 我知道如何用Variant数据types来做到这一点: arrayVariant = Array("hello", "world") 和string数据types: arrayString = Split("hello,world",",") 并可以通过分别初始化每个项目来初始化一组date: arrayDates(0) = #01/01/1900#等 但我找不到任何方法来在一行上初始化date数组。 在VBA中可以吗?

在表中使用指定的标题find两列,差异所有行然后计算平均?

我有一个信息表,我想创build一个函数,在表范围内find两个与我提供的头相匹配的列,然后将这两列的每一行之间的差异存储为一个数组。 得到这个数组后,我想要函数返回数组的平均值,最大值和最小值。 输出将是水平的,并放置在3个相邻的单元格中。 因为表格非常大,我不得不手动执行此操作,因此我必须得到两行的许多排列(435个排列)的差异和平均值,因此手动计算将过于冗长乏味。 Function MatchDiff(header1 As String, header2 As String, tbl As Range) As Variant() Dim c, r, a, Lcol As Single Dim temp_spreads(), temp_final() As Variant Dim Average As Double Dim tbl1, tbl2 As Range ReDim temp_diff(0) ReDim temp_final(0) For c = 1 To tbl.Columns.Count If header1 = tbl.Cells(1, c) Then tbl1 = […]

VBA:捕获一个数组中的唯一值是抛出下标超出范围

我之前曾经发布过关于使用我的工作表(本例中为C列)的一列中的一个dynamic列表作为列D中的数据validation源,同时要求唯一值。 我之前尝试过RemoveDuplicates,但该方法似乎没有工作,所以我select了一个数组。 我发现Jean-Francois Corbett在这个主题中的post很有帮助,但是因为我对数组是新的,所以我觉得我做错了什么。 他的例子是一个二维数组,但是我的列表是一维的。 所以我编辑了一下他的方法,而把结构大体保持完好。 下面的代码似乎工作得很好,直到“varUnique(nUnique)= varIn(i)”接近结束的时候,在这一点上它会抛出错误9:下标超出范围。 Sub FindUnique() Dim rngIn As Range Dim varIn As Variant Dim varUnique As Variant Dim iInCol As Long Dim iInRow As Long Dim iUnique As Long Dim nUnique As Long Dim isUnique As Boolean Dim i As Integer Dim ResultingStatus As Range Dim WhenAction As Range Dim […]