Tag: 数组

是否有可能填充行号符合一定的标准没有循环的数组?

我想在VBA中填充一个只有满足一定条件的行的行号。 我想最快的方法可能(例如,像RowArray = index(valRange=valMatch).row ) 以下是(慢)范围循环的代码。 Current Code Sub get_row_numbers() Dim RowArray() As Long Dim valRange As Range Dim valMatch As String Set valRange = ActiveSheet.Range("A1:A11") valMatch = "aa" ReDim RowArray(WorksheetFunction.CountIf(valRange, valMatch) – 1) For Each c In valRange If c.Value = valMatch Then RowArray(x) = c.Row: x = x + 1 Next c End […]

Excel VBA – 如何Redim的二维数组?

在Excel中通过Visual Basic,我通过加载到Excel中的发票CSV文件迭代。 发票是由客户确定的模式。 我将它们读入一个dynamic的二维数组,然后将它们写入另一个具有较旧发票的工作表中。 我明白,我必须扭转行和列,因为只有数组的最后一个维可能被Redimmed,然后转移,当我把它写到主工作表。 某处,我的语法错了。 它一直告诉我,我已经Dimensionalized数组。 不知何故我创build它作为一个静态数组? 为了让它dynamic地运行,我需要解决什么问题? 工作代码每个答案给出 Sub InvoicesUpdate() ' 'Application Settings Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual 'Instantiate control variables Dim allRows As Long, currentOffset As Long, invoiceActive As Boolean, mAllRows As Long Dim iAllRows As Long, unusedRow As Long, row As Long, mWSExists As Boolean, newmAllRows As […]

最快的方法是将一列数字读入数组中

说如果我有一列数字(其中有多less可能会有所不同,但可能在1000-10000之间的任何地方),我想将它们全部读入VBA数组中,这样做的最快方法是什么? 很明显,我可以创build一个大小为10000的数组,并做一个for / while循环,但是有没有比这更快的方法?

什么是最快的方法来转换arrays字母数字的每个成员?

最后的最终结果: 我想知道下面的结果是否改变,如果string更长。 我在同一台计算机上运行完全相同的testing,除了每个单元有一个34个字符的随机string,而不是四个。 这是结果: Comintern (Regexp): 136.1 ms brettdj (Regexp): 139.9 ms Slai (Regexp): 158.4 ms *Original Regex: 161.0 ms* Comintern (AN): 170.1 ms Comintern (Hash): 183.6 ms ThunderFrame: 232.9 ms *Original replace: 372.9 ms* *Original InStr: 478.1 ms* CallumDA33: 1218.1 ms 这真正显示了正则expression式的速度 – 使用Regex.replace的所有解决scheme都显着加快,最好的是实现了共产国际。 总之,如果string很长,使用数组,如果它们很短,则使用剪贴板。 如果不确定,最好的结果是使用数组,但是这可能会牺牲短string的一些性能。 最终结果: 非常感谢您的build议,显然我还有很多东西要学。 我昨天一直在想这个,所以我决定在家里重新运行一切。 这是最后的结果,基于将其中的每一个应用到三万四个字符的string。 我家里的电脑是英特尔i7 @ 3.6 GHz,8GB内存,64位Windows […]

Excel VBA:数组variables中的variables

对变体的一个问题。 我知道Excel VBA中的变种既是默认的数据types,也是低效的(从大型应用程序过度使用的angular度来看)。 但是,我经常使用它们将数据存储在具有多种数据types的数组中。 我目前正在进行的一个项目本质上是一个需要大量优化代码(c.7000行)的任务 – 这让我思考; 有没有解决的办法? 解释; 代码经常将数据存储在数组variables中。 因此,请考虑10000个10列的数据集。列是多种不同的数据types(string,双精度,整数,date等)。 假设我想把它们存储在一个数组中,我通常会这样做。 dim myDataSet(10,10000) as variant 但是,我的知识说,这将是非常低效的代码评估每个项目,以确定什么样的数据types(实际上,我知道我期待什么)。 另外,我失去了控制个人数据types给我的尺寸。 所以(假设前6个是string,接下来的4个双打便于解释),我可以; dim myDSstrings(6,10000) as string dim myDSdoubles(4,10000) as double 这让我回到了控制和效率 – 但也有点笨重(在实践中,types是混合和不同的 – 我最终有一个奇数的元素在每一个,最终不得不在代码中分别分配它们 – 而不是质量)。 所以,它的一个案例; myDSstrings(1,r) = cells(r,1) myDSdoubles(2,r) = cells(r,2) myDSstrings(2,r) = cells(r,3) myDSstrings(3,r) = cells(r,4) myDSdoubles(3,r) = cells(r,5) ..etc… 这比丑陋得多。 myDataSet(c,r) = cells(r,c) […]

从数组数据创build图表,而不是范围

是否有可能创build一个图表(例如双Y轴线图)而不是从范围,但从arrays数据? 如果是这样,怎么样?

是一个stringVBA中的数组,可以通过迭代?

在VBA中是一个string数组? 例如,我可以像在C / C ++中一样遍历它吗? 做这样的事情: char myArray[10]; for (int i = 0; i < length; i++) { cout << myArray[i]; } 在VBA中相当于什么? 这不是我所期望的。 从来没有真正尝试在VBA之前操纵很多string! 🙂

展开每个列单元格的列单元格

我有3组不同的数据(不同的列) A栏动物(5种) B栏的水果(1000种) C栏中的国家(10种) 有了这3个数据集合,我想得到5×1000×10共计50k对应的元素在列。 EFG(与每个水果和每个国家对应的每个动物)。 可以通过手动复制和粘贴值来完成,但这需要很长时间。 有什么办法通过VBA代码或自动化它吗? 有没有像上面介绍的无限数据集的通用公式? 请让我知道,如果有什么不清楚。 这里是一个较小的数据例子,结果应该如何变化:

Excel VBA:范围到string数组在1步

我知道你可以很容易地获取一系列的单元格,并将它们放入一个Variant数组中,但是我想使用一个string数组(因为它是单维的,并且占用的内存比Variant数组less)。 有没有办法自动将范围转换为string数组? 现在,我正在使用一个函数,它将采用范围并将值保存在variables数组中,然后将variables数组转换为string数组。 它工作得很好,但我正在寻找一种方式直接从范围到string数组。 任何帮助将不胜感激。 Function RangeToArray(ByVal my_range As Range) As String() Dim vArray As Variant Dim sArray() As String Dim i As Long vArray = my_range.Value ReDim sArray(1 To UBound(vArray)) For i = 1 To UBound(vArray) sArray(i) = vArray(i, 1) Next RangeToArray = sArray() End Function 更新:这看起来像没有办法跳过将数据转换为一维string数组之前,将数据放入一个variables数组的步骤。 如果是真的,那真可惜(即使不需要太多的努力,我也喜欢超优化,所以我希望有一种方法可以跳过这一步)。 如果没有解决办法,我会在几天内解决这个问题。 感谢有用的评论,伙计! 更新2:回答西蒙谁付出了很大的努力(所有其他人也一样),并指出从一个镜头范围到string排列确实是不可能的。 感谢大家。

在multidimensional array上使用ubound的VBA

Ubound可以返回一个数组的最大索引值,但是在一个multidimensional array中,我将如何指定WHICH维度我想要的最大索引? 例如 Dim arr(1 to 4, 1 to 3) As Variant 在这个4x3arrays中,我将如何将Ubound返回4,以及如何将Ubound返回3?