Tag: 数组

用数组下标超出范围的错误 – 不知道为什么?

我已经宣布一个数组作为这样的Dim rArray() As Variant但是当我尝试和使用存储在它的值(如下所示),我得到一个下标超出范围的错误。 UBound(rArray)和LBound(rArray)都返回值14和1,但错误发生在Debug.Print行。 如果我使用for语句如下 For Each rArr in rArray 那么它的工作没有问题,但为了创build这个数组的目的,我需要灵活性来select存储在这个顺序中的每个项目 – 这意味着我需要使用下标引用它们。 我已经尝试了多种方法来尝试和解决这个问题,但没有运气,在这个问题上花费了将近一半的时间。 任何人都可以指出我需要改变这个工作。 Set rng = Range("D4", Range("D4").End(xlDown)) rng.NumberFormat = "0" rArray = rng.Value For x = UBound(rArray) To LBound(rArray) Step -1 Debug.Print rArray(x) Next x 编辑:另一个值得一提的事实是,他的数组是在一个函数内声明和使用的,但是它不会传递给函数。 不能在函数中声明和使用数组?

如何从工作表函数中的数组中提取子数组?

有一种比在单元格工作表函数中的起始数组更小的Excel中获取数组的方法吗? 所以如果我有: {23, "", 34, 46, "", "16"} 我会最终: {23, 34, 46, 16} 然后我可以使用其他function来操作。 结论:如果我要做很多这些,我肯定会使用jtolle的UDF梳子解决scheme。 PPC使用的公式是相近的,但是在潜水和testing中,我发现它在空插槽中出现错误,错过了第一个值,并且有一个更简单的方法来获取行号,所以这里是我的最终解决scheme: =IFERROR(INDEX($A$1:$A$6, SMALL(IF(($A$1:$A$6<>""),ROW($A$1:$A$6)),ROW(1:6))),"") 必须以数组公式input(CTRL-SHIFT-ENTER)。 如果被显示,那么必须至lessinput一个与结果集一样大的区域来显示所有结果。

ReDim保留“下标超出范围”

我正试图将数据从2个双数组移动到2个不同的双数组。 我不确定尺寸是什么,因为我正在从第一个数组中取出一个随机样本,并把它放到第二个数组中。 当我添加ReDim保留线时,我得到下标超出范围错误。 Function CreateTrainingSet(TrainingPercent As Double, Inputs() As Double, Outputs() As Double) ' Create Randomized Training set data Dim TrainingInputs() As Double, TrainingOutputs() As Double Dim i As Integer, j As Integer, count As Integer 'ReDim TrainingInputs(UBound(Inputs, 1), UBound(Inputs, 2)) 'ReDim TrainingOutputs(UBound(Outputs, 1), UBound(Outputs, 2)) count = 0 ' Move TraningPercent % of data […]

在pandas数据框上使用str.contains

这个pandaspython代码生成错误信息, “TypeError:一元操作数的错误types:'float'” 我不知道为什么,因为我试图操纵一个str对象 df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*")] #sorts, leaving only cases where reason is NOT File or Registry 有人有什么想法?

Excel VBA – 将一行单元格值传递给数组,然后将该数组粘贴到单元格的相对引用

使用Excel(2010)VBA,我试图复制(传递)一个恒定范围的单元格(其值重新计算)到一个数组。 然后我试图将这个数组传递给它下面一个新的单元格区域。 在完成这个之后,我想再次将常量范围的新值复制(传递)到数组中,并将这些新值传递到之前传递的值的正下方。 我知道这个代码是非常残酷的(我是VBA中的数组的新手)。 Sub ARRAYER() Dim anARRAY(5) As Variant Number_of_Sims = 10 For i = 1 To Number_of_Sims anARRAY = Range("C4:G4") Range("C4").Select ActiveCell.Offset(Number_of_Sims, 0).Select ActiveCell = anARRAY Range("C4").Select Next End Sub 我当然感谢你的帮助! 谢谢。 尊敬, 乔纳森

如果元素是特定值VBA,则删除数组中的元素

我有一个全局数组, prLst()可以变长。 它取数字作为string"1"到Ubound(prLst) 。 但是,当用户input"0" ,我想从列表中删除该元素。 我有写下面的代码来执行此操作: count2 = 0 eachHdr = 1 totHead = UBound(prLst) Do If prLst(eachHdr) = "0" Then prLst(eachHdr).Delete count2 = count2 + 1 End If keepTrack = totHead – count2 'MsgBox "prLst = " & prLst(eachHdr) eachHdr = eachHdr + 1 Loop Until eachHdr > keepTrack 这不起作用。 如果元素为"0"如何有效地删除数组prLst的元素? 注意:这是一个更大的程序的一部分,可以在这里find描述: 对行进行sortingExcel […]

Excel VBA按照降序对数组进行sorting的最快方法?

什么是最快的方法(在计算时间方面)以降序sorting一组数字(1000-10000个数字,但可能会有所不同)? 据我所知,Excel内build函数不是很有效,内存中的sorting应该比Excel函数快很多。 请注意,我无法在电子表格上创build任何内容,所有内容都必须存储并仅在内存中进行sorting。

在VBA中从一个范围创build一个数组

我有一个看似基本的问题,但找不到解决它的任何资源。 简而言之,我只是想将单元格范围内的所有内容(全部列)加载到数组中。 我可以通过这个方法来完成这个任务 DirArray = Array(Range("A1"), Range("A2")) 但出于某种原因,我不能创build这样的数组: DirArray = Array(Range("A1:A2")) 我真正的范围更长(可能会有所不同),所以我不想单独列举单元格这种方式。 任何人都可以告诉我如何正确加载到一个arrays的整个范围? 用后面的代码: MsgBox UBound(DirArray, 1) 和 MsgBox UBound(DirArray) 返回0,而前者返回1。

简单的VBA数组连接不工作

我很疑惑,为什么我不能msgbox这个连接的数组。 我可以做到这一点,如果我创build一个具有input值的静态数组,但从Excel中的值的范围我一直得到“无效的过程调用或参数” 我做了大量的研究,但是我找不到任何这个问题的例子。 我在这里做错了什么? Sub From_sheet_make_array() Dim myarray() As Variant Dim dudeString As String myarray() = Range("B2:B10").Value dudeString = Join(myarray(), ", ") MsgBox dudeString End Sub

如何在Excel中将逻辑或应用于数组

我想通过ORing两个数组使Excel成为一个数组。 举例来说,让两个数组A1:A3为7,8,-3,B1:B3为4,-8,-8 这应该是相当简单的,但似乎是这样 OR ( A1:A3 > 0 ; B1:B3 > 0 ) 返回TRUE而不是我期望的数组(TRUE,TRUE,FALSE)。 当然,我可以使用一个肮脏的伎俩 (((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1 但是谁又想保持这个呢? 此外,可能有东西要search“CSE(Ctrl-Shift-Enter)公式”(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php),但它确实看起来像黑魔法。 我错过了一些容易吗? 对于那些好奇的人来说,我试图build立的实际公式当然要复杂一点。 它试图计数(通过SUMPRODUCT)“(状态== A或状态== B)和date=某个单元格”的所有行。 我正在寻找的OR只是我的sumproduct的一个数组,并没有在单元格中定义(这太容易了)