Tag: 数组

在Excel VBA中编码数组

我有以下代码来删除Excel中的重复项: AlertRange.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, _ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, _ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49), Header:=xlNo 它工作正常。 […]

VBA 2010:关于编码实践的build议,以加速循环

我在脚本的一段中有一个循环,运行速度非常慢。 我希望得到一些改善这方面的build议。 我有8对数据集。 每一对都包含一个数组(一维,通常为400个string元素)和一个包含2000个string元素的列。 在每一对数据集中,我想检查数组的每个元素对列的每个元素进行匹配。 以下是我的方法的简化版本: For i = 1 to 8 For j = 0 to 400 For k = 0 to 2000 If Cells(k,i) = myArray[1, then 2, then 3, etc.](j) then [action] next K next j next i 通过以上操作,我循环遍历列A的前2000个单元400次,然后列B的前2000个单元400次,依此类推。 这似乎是非常多余的,大约有640万个单元格被检查,这是永久的。 我希望有一个更好的方法来做到这一点,有人启发我。 如果有必要的话,我可以告诉你实际的代码,并解释它正在做的所有事情,但是有点冗长。 编辑:这里是实际的代码。 它正在寻找也有一个合格的布尔值的模糊。 当这些条件得到满足时,它就取相应的整数值和行号。 它总结所有的整数值,并用它们的总和replace这些整数。 它为每个唯一的名称做了这个,然后(未显示),为剩余的7个数据集重复这一点。 For i = 0 To […]

是否可以使用VBA组合数组中的值?

我是新来的VBA,我卡住了..我有一个表与工人和他们一直在工作的时间量。 我想插入所有的工作人员到他们已经工作的总时间,然后打印出他们到另一个工作表。 问题是,我不知道是否有可能将这些值一起插入到一个数组中..现在我已经硬编码名称到我的代码,并使用If语句来添加小时正确的名称,但会如果我添加更多的工作人员到表中(因为那么我需要将这些名称也添加到代码中)是一个问题。 我不希望代码在运行之前知道名称或者有多less工作人员。 我希望打印输出如下所示: Steve | 13 Emma | 2 Andy | 3 Jeff | 12 感谢任何帮助!

Excel UDF接受范围和数组作为参数像“SUM”

我写了一个UDF需要接受数组和范围。 通常将参数声明为variant将会起作用,但Range是一个对象,因此不再适用。 这就是说,我粘贴代码,只有在传递数组时才起作用。 这里是基于SUM理论示例: Function TSUM(numbers() As Variant) As Variant Dim i As Integer For i = 1 To UBound(numbers, 1) TSUM = TSUM + numbers(i) Next i End Function = TSUM({1,1})返回2 = TSUM(A1:B1)返回#VALUE! 那么我怎样才能修正上面的例子来接受范围呢?

在Excel中search单元格数组

我想在excel中search一个单元格数组,以查找它是否包含一个单词,然后进一步评估。 比如说 我已经将数组(A1:A5) as 'cList'命名(A1:A5) as 'cList' 。 A1 = apple A2 = pear A3 = orange A4 = banana A5 = cherry 我要 =SEARCH("pear",cList) 但我一直得到错误 – 这是不正确的,因为它包含在A2中。 我的想法是,search不能用于数组,因为如果我使用 =SEARCH("pear",A2) 我会得到我想要的真实。 那么有另一种方法来testing一个数组,如果它包含和答案?

调整二维数组抛出types不匹配

当我偶然发现这个有用的问题和答案时,我正在解决另一个问题 。 然而,实现Control Freak给出的答案在那里退出函数并返回到我的代码上: Years = ReDimPreserve(Years, i, 3)会引发Type Mismatch错误。 我不是一个熟练的程序员来弄清楚这里发生了什么问题,所以任何人都可以从中看出这一点。 这是我的代码: Sub DevideData() Dim i As Integer Dim Years() As String ReDim Years(1, 3) Years(1, 1) = Cells(2, 1).Value Years(1, 2) = 2 i = 2 ThisWorkbook.Worksheets("Simple Boundary").Activate TotalRows = ThisWorkbook.Worksheets("Simple Boundary").Range("A100000").End(xlUp).row For row = 3 To TotalRows Years = ReDimPreserve(Years, i, 3) If […]

如何通过VBA数组循环时获取元素号

我有这个VBA代码循环通过一个数组(在这种情况下,supplier_reports()),它工作正常。 我想知道是否有人知道是否有一种方法来获取元素号码时使用数组中的值: For Each x In supplier_reports Workbooks.Open (x) element_number = x next x 在这种情况下,元素编号就是x的值,而不是数组中的元素编号。 谢谢

IsInArray Excel VBA …超出范围

我试图创build一个数组通过循环在Excel中的列。 如果一个项目已经在数组中,那么我希望代码跳到列的下一个元素。 例如,当item1第二次到达数组时,它将被跳过,因为它已经在那里了 这是迄今为止的代码: Sub productKey() ' ' productKey Macro Dim celltxt As String 'each column element Dim ListofProducts() As String 'declaration of array For i = 1 To 6 celltxt = ActiveSheet.Range("A" & i) 'grabs cell from column A If IsInArray(celltxt, ListofProducts) Then GoTo NextIteration Else ReDim Preserve ListofProducts(i) 'expands the array while preserving […]

Excel 2007 VBA将命名范围的一部分分配给数组

我有一个每月销售数字表格 – FreqData1。 每列表示一个月份,编号为1到12.用户从下拉列表中select其中一个数字。 我有代码find列号,我试图将该列中的数据分配给一个数组,所以我可以用它复制到不同的电子表格,但与我的基本VBA知识,尽pipe大量的search,我一直无法find如何做到这一点或不同的方法来执行此代码。 任何人都可以帮助请 Sub AnnualFreqMacro() Dim TPNoInt As Long, BranchNoInt As Long, ColNo As Long Dim FreqArray() Worksheets("Freq data").Activate TPNoInt = Range("B42").Value BranchNoInt = Range("B41").Value ColNo = Application.Match(TPNoInt, Range("TPBr1"), 0) CharaArray = Range("FreqData1").Cells (1, ColNo), Cells(16, ColNo)) End Sub 提前谢谢了

我怎样才能从数组中删除一个项目?

我有一个包含联系人电子邮件地址的Excel文件,如下所示。 ABC 1 Shop Supervisor Assistant 2 A hulk.hogan@web.com freddie.mercury@web.com 3 B brian.may@web.com 4 C triple.h@web.com roger.taylor@web.com 5 D 6 E randy.orton@web.com john.deacom@web.com 我已经创build了一个用户表单,用户可以select他们想要发送电子邮件的angular色(主pipe或助理),或者如果需要,他们可以通过电子邮件发送电子邮件,然后有代码将这些angular色的电子邮件地址,打开一个新的电子邮件,电子邮件地址到“到”部分。 此代码如下所示: Private Sub btnEmail_Click() Dim To_Recipients As String Dim NoContacts() As String Dim objOutlook As Object Dim objMail As Object Dim firstRow As Long Dim lastRow As Long ReDim NoContacts(1 To […]