Tag: 数组

如何使用从函数返回的string数组?

我有一个函数返回一个string array Function getAr() As String Dim tmpAr(3) As String getAr(0) = "Hallo" getAr(1) = "I" getAr(2) = "Am" getAr(3) = "I" getAr = tmpAr End Function 在一个Sub我想重新分配返回的string数组 Sub test() Dim tmpAr() As String ReDim tmpAr(UBound(getAr)) Debug.Print tmpAr(0) Debug.Print tmpAr(1) End Sub 错误是 分配给数据字段是不可能的。 我想这是因为我必须将strAr尺寸strAr为与myfunc strAr相同的尺寸。 但是我不知道这些信息。 有人可以帮我吗?

从数组中删除重复 – vba

我有一个代码,从一个文件的列抓取数据,并将其放入一个数组。 现在,我想通过这个数组并删除重复,但我不能通过…任何想法? 这是代码,数组在最后: Dim i As Long Dim searchItem As Variant strSearch = "" searchItem = "" strFile = "…\Desktop\xl files min\src.xlsm" Set s_wbk = Workbooks.Open(strFile) With s_wbk.Worksheets("Sheet1") For i = 1 To Rows.Count If Not IsEmpty(Cells(i, 1).Value) Then strSearch = strSearch & "," & Cells(i, 1).Value End If Next i End With s_wbk.Close searchItem […]

Excel VBA – 将二维数组的值分配给单元格范围

我试图给一个新的工作表分配一个大小为183×6的二维数组,用数组的值填充A1:G182中的空白单元格。 作为参考,我的数组被称为“目录”,我要填充的空表被称为“列表”。 我已经尝试了两种不同的方法,一种是通过明确地将指定的范围分配给数组: Worksheets("List").Range(Cells(1,1), Cells(UBound(Directory, 1) + 1, UBound(Directory, 2) + 1)) = Directory 还试图遍历数组中的每个条目: For i = 0 To UBound(Directory, 1) For j = 0 To UBound(Directory, 2) Worksheets("List").Range(Cells(i + 1, j + 1), Cells(i + 1, j + 1)) = Directory(i,j) Next j Next i 在这两种情况下,我得到的错误: Run-time error '1004': Application-defined or object defined […]

在数组中处理数据时发生错误

我想确定B列中的date是否在几个时期中的两个date之间(第m月的第一天和第m- 1年的第n + 1天的最后一天)。 例如,2013年9月20日,列B中的单元值是否落在: 7/1/2010 and 6/30/2011 7/1/2011 and 6/30/2012 7/1/2012 and 6/30/2013 7/1/2013 and 6/30/2014 7/1/2015 and 6/30/2016 如果为True,则列C的同一行中的单元格值将包含date落在的结束期间的年份(在本例中为2014),如果为False ,将返回空白单元格。 以下是我需要检查的B列中的数据: 9/11/2013 8/20/2015 8/22/2013 8/31/2001 (Blank cell) 8/31/2009 AAA 9/3/2013 (Blank cell) 9/25/2011 9/30/2013 10/10/2012 Anna 10/4/2015 首先我用下面的代码进行了检查: Sub CheckMyYear1_Click() Dim i As Long, j As Long, Last_Row As Long, Period As Long […]

如何转换或parsing一个string以使用dateserial VBA Excel

我有一个由两个元素组成的数据列(作为stringinput)。 3/20/2016 6:30:55 PM 3/12/2016 8:15:45 PM 3/8/2016 1:25:18 AM 我想设置一个variables等于上面提到的string的date部分的DateSerial。 我不想将数据分开,并将其分散在不同的列中。 我希望保持格式不变。 我将加载一个数组与表中的所有数据(多列),但我想按date索引数组。 我将在数组上运行一个快速sorting,然后对sorting数组做一些额外的交叉引用。 但是,我不能进入这些阶段,实际的数据集,因为我被困在date问题。 如何根据源数据的格式按date进行索引? Dim d as Date Dim arTemp Dim arTemp1 Dim WS As Worksheet Dim list As Object, list1 As Object Dim RowCount as Integer, y As Integer Set list = CreateObject("System.Collections.SortedList") Set list1 = CreateObject("System.Collections.SortedList") For Each WS In […]

build立和比较数组

我有下面的代码,我试图去工作。 这是我第一次处理VBA中的数组。 这里是我要去的纯英文版本: 从工作表SSB的列A加载SSBarray。 从工作表EDM加载列I的EDMarray。 比较上面的数组,并根据可能的匹配将它们sorting成两个新数组IDarray和noIDarray。 将新arrays输出到它们各自的工作表中。 第四步是暂时的,以确保代码是正常工作。 整个项目将所有的数据从3张汇编到这两个列表中。 工作表1只有数据点A,工作表2可能有也可能没有数据点A,B和/或C,而工作表3可能有也可能没有数据点A,B和/或C.我的代码是我开始检查工作表1中的所有数据点A在工作表2中。运行时间也是一个因素。 我会采取任何和所有的帮助,我可以在这一点上得到。 谢谢。 'Build Arrays Dim i As Long, j As Long Dim SSBarray Dim EDMarray Dim IDarray Dim noIDarray Dim YCounter As Long Dim NCounter As Long Dim inArray As Boolean endSSB = SSB.Range("A" & Rows.Count).End(xlUp).Row endEDM = EDM.Range("A" & Rows.Count).End(xlUp).Row BBlast = BB.Range("A" & […]

循环将值复制到数组中

我处于一种需要在VBA中重现某些东西的情况,而且由于我对面向对象的语言和VBA一般的理解不够,所以有些困难。 问题 : 我需要生成一个基于2列表的数组或向量。 第一个范围(列)包含单位计数。 第二个范围(列)包含数字值。 我需要根据单位数量复制值。 例如, 如果第一行包含3个价值$ 100的单位,我需要数组包含$ 100,$ 100,$ 100。 这将需要通过每行包含单位循环。 所以如果第2行包含2个价值$ 50的单位 我需要完成数组为100美元,100美元,100美元,50美元,50美元,等等。 我知道这种情况将需要基于总值的ReDim数组。 我的斗争是我一直无法找出嵌套for循环。 我得到如何复制基于像下面的“单位”数量的价值… ReDim arr(0 To x – 1) For i = 0 To x – 1 arr(i) = rng.Offset(0, 1).Value Next 什么是循环通过每一行,并根据单位计数范围内的每一行复制值的最佳方法是什么? 如果任何人都熟悉R,我实质上是在寻找实现rep()函数的东西(例如,rep(df $ b,df $ a)),并返回一个数组中的值。 任何帮助是极大的赞赏。 谢谢

如何判断2个数组是否共享相同的元素

所以这是我的问题的一个更简单的forms。 可以说我有2个数组。 A = {1,2}和B = {2,4,6}。 如果A和B共享一个元素,那么从B中删除这个元素。我知道你可以遍历并比较A中的每个元素到B中的每个元素,但是有一个更好的方法!

使用ARRAY中的variables声明单元格(行,列)

是否有可能使用数组中的variables来声明单元格的位置? 这是我的旧代码完美的作品,但如果我需要更多的细胞? (我把它缩短)。 该代码通过按下button将所选单元格的值设置为零。 Sub ResetButt01_Click() Cells(12, 5).Value = 0 Cells(12, 13).Value = 0 Cells(12, 21).Value = 0 Cells(19, 4).Value = 0 Cells(19, 6).Value = 0 Cells(19, 12).Value = 0 End Sub 这里是我试图通过使用数组来做到这一点: Sub ResetButt01_Click() Dim myRow() As Variant Dim myCol() As Variant myRow = Array(12, 12, 12, 19, 19, 19) myCol = Array(5, 13, […]

在Excel VBA中将数据表名称添加到数组中

我正在尝试使用下面的代码将表名添加到Excel VBA中的数组中。 它只提取一个值(总是最后的工作表名称)。 例如,如果我有两个工作表:List1和List2,它只拾取List2并为第一个工作表显示空白值。 如果我加4,它只显示第4个,依此类推。 我不知道为什么我得到空白值。 Dim curSheet As Worksheet Dim ArraySheets() As String Dim x As Variant For Each curSheet In ActiveWorkbook.Worksheets If curSheet.Name Like "*List*" Then ReDim ArraySheets(x) ArraySheets(x) = curSheet.Name x = x + 1 End If Next curSheet