Tag: 循环

使用VBA循环search一个不断变化的值列表并删除它们?

我一直在做一个excel工作表,我正在使用一个macros来运行一个“查找function”,在单独的工作表上find一个单词/短语,然后删除这个单词/短语所在的整个列。目前,感谢我的最后一篇文章( 有没有办法使用查找function与改变,用户input值在Excelmacros? )我有这样的: Dim strFind As String Dim rngFind As Range Dim i As Integer strFind = Sheets("Instructions").Range("E56").Value Set rngFind = Sheets("Forecast").Cells.Find(What:=strFind, LookAt:=xlPart) check if value is found Do While Not rngFind Is Nothing If Not rngFind Is Nothing Then i = 0 Do While rngFind.Offset(0, i + 1) = "" i = i + […]

Excel / VBA – Error1004与GoalSeek做一个周期

当我运行这个代码时,我设法填满了我想要的表格,但是在最后一次迭代中它断开了Range(“F”&r)…行并给出了错误1004。 我不明白为什么。 确实运行它的工作…但最终会产生错误。 Sub Stuff1() Dim r As Integer r = 37 Do Range("F" & r).GoalSeek Goal:=0, ChangingCell:=Range("D" & r) r = r + 1 Loop Until IsEmpty("E" & r) End Sub 注意:我试着做一个Do While Not,它发生的情况完全一样。 编辑:Excel 2013 btw

有没有更好的select比循环减less处理时间?

我正在通过未决数据列表上的values循环,然后更新主列表(如果有任何这些值是新的)。 未决列表通常有100-200 rows的数据,每row有大约10个variables ,需要确保在主列表上更新。 主列表大约有10,000 rows 。 我已经编写了代码,这些代码将loop未决列表的each row ,将values分配给variables ,然后在主列表上执行find以查找匹配的logging,然后相应地更新它。 我的代码工作正常,正是我想要的,但处理时间约为4分钟,比使用它的人员愿意允许的时间长3分50秒而不抱怨。 是否有替代编码,我可以用来帮助减less处理时间? 我有很长的代码,所以我不打算把它粘贴在这里,而是粘贴snip-it,以便你可以了解我现在正在做什么: Application.Screenupdating = False Applicaiton.Enableevents = False Application.Calculation = xlCalculationManual PendingBRow = ThisWorkbook.Sheets("PendingLog").Range("A65000").End(xlUp).Row MasterBRow = ThisWorkbook.Sheets("MasterLog").Range("A65000").End(xlUp).Row For D = 2 To PendingBRow With ThisWorkbook.Sheets("PendingLog").Range("A" & D) PendingRecordNumber = .Value PendingIR = .offset(0, 5).Value PendingVal = .offset(0, 6).Value End With With ThisWorkbook.Sheets("MasterLog").Range("B2:B" & […]

在SQL导出到Excel循环中缺less前导零

新的VB程序员在这里。 我正在使用下面的方法将SQL表导出到Excel文件。 但是,当我在Excel中创build文件时,由于被转换为数字而不是文本,我的主键的前导零缺失。 这是由于来自数据表的信息出色。 我想知道我能做些什么来保持我的领先零。 仅供参考 – 我的主键是6位数字,只有less数人在开始时缺less一个0。 还有很多其他的行和列在第一列之后被放入到excel文件中,所有这些都是完美的。 这只是第一列主键,我需要改变格式莫名其妙。 另外,我正在使用这个excel文件,然后上传到SQL和一些主键上的缺less0我的程序创build一个新的logging。 我以为主要的改变可能发生在这里,但我不知道如何做到这一点: 'Export the Columns to excel file For Each dc In datatableMain.Columns colIndex = colIndex + 1 oSheet.Cells(1, colIndex) = dc.ColumnName Next For Each dr In datatableMain.Rows rowIndex = rowIndex + 1 colIndex = 1 For Each dc In datatableMain.Columns colIndex = colIndex + […]

直到在Excel中循环

您好我正在尝试循环,直到它find最后一个单元格,然后停止,但是当它到达空单元格时,它给我一个错误,因为没有人通过电子邮件发送到最后一个空单元格。 我会复制我的代码,所以你可能明白我的意思。 Sub SendMassEmail() row_number = 0 Do DoEvents row_number = row_number + 1 item_in_review = Sheet1.Range("A" & row_number) Dim mail_body_message As String Dim full_name As String Dim exam_grade As String mail_body_message = Sheet1.Range("G3") full_name = Sheet1.Range("B" & row_number) & " " & Sheet1.Range("C" & row_number) exam_grade = Sheet1.Range("D" & row_number) mail_body_message = Replace(mail_body_message, "replace_name_here", […]

通过列循环插入SUM公式

我有一个程序,我需要find列7到30(G到AD)的总和。 我想要做的是循环并插入公式(= SUM(Columns(i)2:Columns(i)1000))但显然Columns(i)不是字母,而是数字。 这不符合SUM所要求的格式,所以我想知道我能做些什么。 我有一个程序,旧的工作表将被删除,新的工具添加了一个产品的configuration数据。 这意味着公式不能在表格本身或任何其他表单引用。 价格将保存在G到P和U到AD列,我需要find总数,并将其放在第一行上方的相应数据。 当我尝试: For i = 7 To 30 wsNewSheet.Cells(1, i).Value = "=SUM(" & Columns(i).Select & "2:" & Columns(i).Select & "1000)" Next i 列(i)由于某种原因返回为“真”。 我也试图将总数放在不同的工作表中,因为新工作表(wsNewSheet)正在创build。 For i = 2 To 30 For f = 7 To 30 wsTotals.Cells(1, i).Value = "=SUM(" & wsNewSheet & "!" & Columns(f).Select & "2:" & […]

如何循环使用数组的单元格的分散select

我有一个分散的单元格的电子表格,我想在一个厚边框轮廓。 我把单元格放在一个数组中。 有些是个别的细胞,有些是连续的分组。 由于添加这些边框的代码很长,我想循环遍历将有边框的单元格。 我试图select单元格的行正在使用我编写的语法,显然不起作用。 有没有什么语法可以工作,还是我以错误的方式处理问题? arrCellBorders = Array("A2", "A3", "A6", "B5", "G1", "E7:E10", "E19:E22", "E33:E36", "I7:I10", "I19:I22", "I33:I36", "K7:K10", "K19:K21", "K33", "O7:O10", "O19:O21", "O33", "Q7", "Q9:Q10", "U7", "U9:U10") For iCounter = 0 To 20 Range("arrCellBorders(iCounter)").Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeTop) .LineStyle […]

VBA CountA / countif加法

嗨,大家只是快速的问题。 我想在VBA excel中做一个Counta / Countif公式 。 我正在使用的代码如下。 Sub To_open Dim x as Range x =COUNTA('Tier 2'!C2:C1000)+COUNTA('Tier 3'!C2:C1000)+COUNTA('Tier 4'!C2:C1000)+COUNTA('Tier 5'!C2:C1000) If x = 0 then msgbox " No impact " End If End sub 代码是假设计数并添加颜色C中的行的值,在4张 ,如果它等于零,然后显示消息框。

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 […]

通过variables循环来创build文件夹

我尝试使用下面的代码循环通过strDirvariables在4个不同的位置创build4个不同的文件夹。 它不创build文件夹。 没有错误出现。 Dim i as Integer JobName = NewJob.Value If New_Job.JobYes.Value Then strDir1 = "C:\QTR\" & JobName & " QTR" strDir2 = "C:\QT\" & JobName & " QT" strDir3 = "C:\EMAILS\" & JobName & " EMAILS" strDir4 = "C:\DOCUMENTS\" & JobName & " DOCS" For i = 1 To 4 If Dir(strDir, vbDirectory) = […]