Tag: 数组

将整列数据分配给vba中的数组的特定列

我有一个excel工作簿,我正在处理大量的数据。 在这一点大概5000列和1000行,但这会增长。 我已经定义和排列在下面的方式 ReDim arr(1 To numRows, 1 To lastcol3) 如果我以下面的方式使用double for循环,我可以填充整个数组,它可以工作: For r = 1 To lastcol3 For i = 1 To numRows arr(i, r) = ws1.Cells(i, 11) Next Next 其中ws1是所讨论的工作表,11是我想从中获取数据的数据列(每个r值都有变化)。 这种方法的工作,但需要大量的时间,因为它是循环通过每一行数据。 我想知道是否有一种方法,为r的每个值,将列11分配给数组中的相应列“r”。 这将确保代码只需要通过r循环,而不是我呢? 我在网上search了很多,但似乎无法find一种方法来定义一个数组中的特定列,并使其等于一个数据范围。 如果您需要进一步澄清或代码的副本,请让我知道。

Excel的平均值基于行和列值

我想根据藻类组(B栏)和月份(收集date在第一行)计算藻类计数的平均值(和其他汇总统计数据)。 前几个列和行看起来像这样: row B———————C——————-D Algal Group ——-6/5/2000 ———-7/5/2000—–etc. Cyanobacteria——-5———————60 Bacillariophyta——-2———————40 Xanthophyta——-[blank]—————30 我试过使用与MONTH论坛结合的标准AVERAGEIFS,但是我认为这一行date正在抛弃。 我也尝试在date(即第2行)之下插入一行,第1行中的收集date的月份,并在AVERAGEIFS中引用该列。 那也行不通。 我也试过把它作为数组公式input。 date是C1:DW1,藻类组是B2:B246。 任何想法都非常感谢!

结合PDF与VBA

我试图将一个PDF数组合并成一个这样的代码: Option Explicit Sub Fusion_PDFs(ByVal name As String, ByRef pdfs() As Variant) Dim oPDDoc() As Object Dim oPDDocFinal As Object Dim Num As Long Dim i As Integer Set oPDDocFinal = CreateObject("AcroExch.PDDoc") oPDDocFinal.Open (pdfs(0)) ReDim oPDDoc(UBound(pdfs)) For i = LBound(pdfs) + 1 To UBound(pdfs) Set oPDDoc(i) = CreateObject("AcroExch.PDDoc") oPDDoc(i).Open (pdfs(i)) Next i For i = […]

如何将数据从一维数组写入到Python的Excel文件?

我是新来的python,我必须改变这个代码有一维数组不是一个二维数组。这个代码是完全可以写入数据到一个Excel文件。 请帮我把它改成一维数组。 eg: only to enter as 1D array as below expenses = [ [1000], [100], [300], [50], ] import xlsxwriternter workbook = xlsxwriter.Workbook('20.xlsx') worksheet = workbook.add_worksheet() expenses = [ ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ] row = 0 col = 0 for item,cost in (expenses): worksheet.write(row, col, item) row += 1 […]

为什么这个locking? 循环遍历所有行,重复执行函数,删除重复行

当我每次咬掉几百行代码时,代码就会起作用,但是当我尝试运行它时,它总是挂在中间的某个地方。 代码的作用是:在列A中查找重复的条目,在两行之间的列c,d和e中添加值,然后删除原始行。 任何人都可以想一个更稳定的方式来做到这一点,或者指出为什么它可能会被locking? Sub combineDelete () Const TEST_COLUMN As String = "A" Dim i As Long Dim iLastRow As Long With ActiveSheet iLastRow = .Cells(.Rows.Count, TEST_COLUMN).End(xlUp).Row For i = iLastRow To 2 Step -1 If Cells(i, 1) = Cells(i – 1, 1) Then s = Cells(i, 3).Value t = Cells(i – 1, 3).Value Cells(i – […]

VBA-遍历数组中的string值并确定它们是否与特定文本相同

我有一个excel的数据集很多列。 我正在使用UserForm条目来填充这些列。 但是我也希望能够在用户表单中编写一个现有的ID,并使用从表单中提取的相应数据自动填充useform。 列的顺序可能会改变,所以我不想使用偏移function来做到这一点。 我想在我的代码中做的是做一个数组与所有的列名称(它是相应的文本框中的条目forms命名相同)。 首先,我正在查找该行的ID。 然后我想遍历不同的列,并find它们下面的值对应的ID来填充我的表单。 问题是,我想使用“数组(我)”作为我的用户表单中的文本框的名称,但它不读取它。 例如: 如果我直接写入MRN =单元格(CSN_R,Changing_C),它会填充具有正确数据的条目表单,因为它select“MRN”或“Myarray(0)”下的id行和列号。 但是,如果我使用myarray(0)=单元格(CSN_R,Changing_C),它不….我不知道该怎么做,以使其工作。 Dim CSN_Find As Range Dim CSN_Existing As Range Dim CSN_New As Range Dim CSN_R As Integer Dim Changing_C As Integer ' Look for the CSN value Worksheets("Input Data").Activate Worksheets("Input Data").Rows(1).Find(What:="CSN", LookIn:=xlValues).EntireColumn.Select Set CSN_Find = Selection.Find(What:=CSN.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) ' If it's […]

从数组VBA获取列

我很难从数组中返回一组列。 我已经返回一个sql select语句到我的variant数组。 它有16列。 我需要抓取16列中的12列,以便从数组中的特定行返回到我的电子表格。 我正在使用此代码来获取我的行: If UBound(Filter(budget, Cells(i, 1).Value, , vbBinaryCompare)) >= 0 And Cells(i, 1).Value <> "" Then 那么我如何才能得到我需要的12个色谱柱呢? 列是数组中的最后12列,并且将始终按我需要的顺序排列。 先谢谢您的帮助!

VBA Excelsearch包含不同单词之一的单元格

我需要创build一个脚本来着色或删除至less包含一个我需要search的单词的行。 例如,我有一个数组或像“alpha”“beta”“gamma”这样的单词列表,我需要在colum A和B中search那里有不同的单词和string,如果这些单词存在,至less有一个他们,然后颜色或删除行,但这不是问题。 这是我所做的,find了互联网上的某个地方,但它不起作用。 我有大约30个词来search,甚至更多。 你可以帮我吗? Sub Macro2() ' ' Macro2 Macro ' For i = 2 To 1000 If Evaluate("COUNT(SEARCH({""alpha"",""beta"",""gamma""}," & Cells(i, 1).Address & "))") > 0 Then Rows(i).Interior.Color = RGB(127, 187, 199) GoTo Prossimo End If If Evaluate("COUNT(SEARCH({""alpha"",""beta"",""gamma""}," & Cells(i, 2).Address & "))") > 0 Then Rows(i).Interior.Color = RGB(127, 187, 199) GoTo Prossimo […]

VBA – 在string中search数组中的所有值

这里只是一个效率问题。 我基本上循环通过列中的单元格,以查看它们是否包含特定的string,但是那个单元格也不需要包含14个不同的string中的任何一个。 我目前的解决scheme是findstring,然后使用instr在单元格中循环访问数组。 但是,这个macros在运行时可能会发生数百次。 我很好奇,如果有更好的方法。 例如: NotArr = Array("blah1", "blah2", "blah3", "etc") For r = 1 to 10 'Let's assume I've already found the first string For i = 1 to 4 If Not InStr(Cells(r, 1).value, NotArr(i)) > 0 Then 'Do things End If Next i Next r 注意:我知道我可能已经过时了,或者只是错过了明显的。 我已经在VBA中被埋在了大约6个星期@ 10个小时的时间里,可以感觉到我的大脑正在融化。 谢谢大家!

Excel VBA如何将数值的列附加到数组?

我想search一列数据并比较这些值。 如果一个值不在数组中,那么我想把值追加到数组中。 否则,我会继续浏览每一行。 我在语法上遇到了一些麻烦。 我能得到一些帮助吗? 当我运行这个时,我得到一个错误说IsError(Application.Match(cells(i,4).Value,codeArr,False))函数的“无效的过程调用或参数”。 For i = 1 To 17381 If IsError(Application.Match(cells(i, 1).Value, codeArr, False)) Then ReDim Preserve codeArr(count) codeArr(count) = cells(i, 1) count = count + 1 End If Next i