Tag: 数组

内存不足第二次运行

当我尝试从CSV文件加载大型数组时,会发生意想不到的事情。 该文件有100000行和100列(80MB)。 我尝试了很多方法来快速加载CSV(因为速度是本质的)。 下面的代码第一次运行良好,但是当我第二次运行它时,variablestitle(String)或者redim arrRaw(Variant)给出了“内存不足”的错误。 重新启动Excel后,它再次正常工作。 它们都是本地声明的variables。 我试图使用公开声明,然后擦除arrays,但这个diddent工作。 我的系统显示RAM内存没有问题。 有没有解决这个问题的方法? Open filepath For Binary Access Read As #i Get #i, , res Close i title = Split(Right(Left(res, Len(res) – 1), Len(Left(res, Len(res) – 1)) – 1), vbLf) columnsArr = UBound(Split(title(1), ";")) rowsArr = UBound(title) ReDim arrRaw(1 To rowsArr, 1 To columnsArr) Call timerClock(True) For i […]

用户定义的对象在数组VBA中

正如主题行指出的,我试图存储我写入一个数组类的对象。 VBA给了我令人沮丧的错误: “对象variables或块variables未设置” 我很确定我正确地定义了我的对象,局部variables显示对象是我定义的types,并且所有的字段都被填充了,所以我无法弄清楚我的问题在哪里。 Dim Type1(2 To 250) As myClass Dim Type2(2 To 250) As myClass Dim Type3(2 To 250) As myClass Dim temp_obj As myClass Dim foo As String For i = 2 To 250 Set temp_obj = New myClass With temp_obj .field1 = Worksheets("Sheet1").Rows(i).Columns(2).Value .field2 = Worksheets("Sheet1").Rows(i).Columns(3).Value .field3 = Worksheets("sheet1").Rows(i).Columns(4).Value .field4 = Worksheets("Sheet1").Rows(i).Columns(5).Value […]

数组计算后不写入所需单元的函数; excel vba用户表单

我是vba新手,需要一些帮助。 我有一个函数的作用是写一个单元格的文本值取决于一定的条件。 input到函数将是从用户窗体中的combobox获得的string。 行列式是53个单元格的数组,其值为“1”或“”。 Function State(ID As String, Rowarray() As String) Dim ws As Worksheet Dim Rej As String Dim Vir As String Dim Result As Variant Dim Rng Dim Rngrow As Integer Dim Arr Set ws = ThisWorkbook.Worksheets("Temp") Set Rng = ws.Columns(5).Find(ID).Address 'obtains the address of a cell with a value matching the combobox […]

循环遍历单元格并将值添加到数组中,然后显示在VBA中的activecell中

我一直在努力这一段时间,我需要帮助。 我是vba新手,希望能对这个问题提供一些指导。 我的电子表格设置,所以我在单元格a2和读取b2中的值是一个整数,告诉我有多less补充configuration文件(sups)存在。 假设数字3在b2中。 然后我期望c2下方的2行在c3和c4中input一些文本(angular色)。 在a2上时,我正在阅读b2中的补充configuration文件的数量,然后循环显示在c2,c3和c4中find的a2angular色。 这可能会改变,因为在某些情况下,只有2个angular色或3个,等等。 要做到这一点,我编码如下: Sub testarray() Dim sups As Integer Dim role, resultrole As String Dim test() As String role = ActiveCell.Offset(i, 2).Value sups = ActiveCell.Offset(0, 1).Value i = 0 Do While i <= sups test() = Split(role) i = i + 1 ActiveCell.Value = test() Loop End Sub 问题是我只得到行c2显示,并不是所有的内容如下。 我想a2显示值c2,c3和c4。 […]

Excel VBA高效的比较两个二维数组的方法

我有两个二维数组(我们称之为A和B),它们都包含元素0处的序列号和元素1处的date.A中的许多序列号都在B中find(大约60%)。 如果有匹配,我需要检查数组B中的相应date是否小于数组A中的date,如果是,则将A中的date设置为null。 目前我正在循环中使用循环: For x = 0 To UBound(arrayA) For y = 0 To UBound(arrayB) If arrayB(y, 0) = arrayA(x, 0) Then ' the serial numbers match If arrayB(y, 1) < arrayA(x, 1) Then ' test the dates arrayA(x, 1) = Null End If Exit For End If Next y Next x 这工作正常,但很慢(约30 – 40秒),所以我一直在试图devise其他方法,其中一些非常古怪,如 […]

如何使用VBA在多列列表框中隐藏列

我正在使用2维数组将数据加载到多列列表框中。 我想隐藏一个特定的列,但不知道如何。 我不能排除数据 – 因为我想稍后将其作为隐藏的列引用 – 但我不希望用户看到它。 这是我到目前为止: For x = 0 To UBound(ReturnArray, 2) NISSLIST.ListBox1.Clear 'Make sure the Listbox is empty NISSLIST.ListBox1.ColumnCount = UBound(ReturnArray, 1) 'Set the number of columns 'Fill the Listbox NISSLIST.ListBox1.AddItem x 'Additem creates a new row For y = 0 To UBound(ReturnArray, 1) NISSLIST.ListBox1.LIST(x, y) = ReturnArray(y, x) 'List(x,y) X […]

将符合标准的行中的值转置

我试图分析各个公司为某个火车旅程提供的折扣,并相应地列出公司名称和折扣。 input数据集如下图所示: 我想要做的事情基本上是转置数据集,并在折扣大于0时创build以下输出并返回公司/列名称。 (见下文) 我试图使用下面的公式: {=INDEX(A1:F7,SMALL(IF(AND(A2:A7=H2,B2:F2>0),COLUMNS(B1:F1)),COLUMNS(1:1))-1,3)} – 这似乎总是产生#NUM! 错误 =INDEX(A1:F7, MATCH(H2,A2:A7,0),MATCH(I2,B1:F1,0)) 如果我已经列出了所有可能的路线,并且每个公司都有一条路线,即使折扣为0,这也是有效的。假设我有40家公司和15000多条路线,我并不想创build一个长列表LONPAR与B列中的每个公司,其次是LONFRA等。 有什么我失踪,或任何指导,或function,你可以提供帮助我得到解决scheme?

在数组vba中查找重复的数字

我想创build一个大小为50的数组,在0到20之间的随机数的vba,然后提取数组,重复在该数组到另一个数组。 Sub Problem10() Dim numbers() As Double, odd() As Double, even() As Double, five() As Double, repeating() As Double, x As Integer, i As Integer, sOdd As Integer, sEven As Integer, sFive As Integer, sNumbers As Integer, sRepeating As Integer, y As Integer, listed As Boolean sRepeating = 0 sNumbers = 50 For i = […]

循环通过python数组来匹配第二个数组中的多个条件,快速的方法?

我是一个Python的初学者,想知道是否有更快的方法来做这个代码,所以请原谅我的无知。 我有2个Excel表格:一个( 结果 )有大约30,000行唯一的用户id,然后我有30列的问题问题,下面的单元格是空的。 我的第二张( 答案 ),有大约40万行和3列。 第一列有用户标识符,第二列有问题,第三列有来自用户的相应问题的答案。 我想要做的事情本质上是一个索引匹配数组excel函数,我可以通过匹配用户标识和问题来填充表单1中的空白单元格和表单2中的答案。 现在我写了一段代码,但是从表1中处理4列需要花费大约2个小时。我试图弄清楚我的做法是不是完全利用了Numpy的function。 import pandas as pd import numpy as np # Need to take in data from 'answers' and merge it into the 'results' data # Will requiring matching the data based on 'id' in column 1 of 'answers' and the # 'question' in column 2 of […]

Excel VBA“types不匹配:数组或预期的用户定义的types”

我知道很多人都对这个错误提出了问题,但是根据这些答案,我应该做的都是正确的。 我创build了一个名为Variable的类来存储有关variables的多个信息。 我有另一个叫做Equipment类,它存储了这些variables的数组。 这里是Equipment的相关代码: Public name As String Private variables() As Variable Public Sub setVariables(vars() As Variable) variables = vars End Sub 我也有一个创buildEquipment实例的模块。 这里是所有的代码: Public Sub fillEquipment() 'figure out how many units of equipment there are numUnits = 0 atRow = 1 Do Until Range("A" & atRow).value = "" numUnits = numUnits + 1 atRow […]