Tag: 循环

VBA GoalSeek Loop问题

我是VBA的新手,在我的第一个代码中,我尝试通过2列(P和J)来实现GoalSeek函数的循环。 设置的单元格是P2然后P3然后是P4等等。而更改单元格是J2然后是J3等 我想从第2行迭代到第N行(数字N存储在单元格D1中) 这是我写的: N = ThisWorkbook.Sheets("Reverse DCF").Range("D1").Value Dim i As Integer For i = 2 To N Range(Cells((i), "P")).GoalSeek Goal:=0, ChangingCell:=Range(Cells((i), "J")) Next i 我收到一条错误消息: “_Global”对象的“范围”失败。对不起,但我没有看到我的代码出现问题。 提前致谢 !

在GAMS中用于在Excel中创build场景的循环

我有一个优化模型,我尝试为不同的input文件解决这个模型,我正是所谓的“解决不同情况下的模型”。 出于这个原因,我需要一个循环来读取Excel中的数据为每个不同的工作表。 让我清楚地说明一下:例如,在下面的图片中,我们有一个4场景的数据,每个场景的图纸名称都是逐一增加的 这些数据必须作为每个场景的表格来读取,就像在excel文件中一样。 我尝试从循环中读取不同Excel表格中的数据。 我可以在Gams做这个吗? 在GAMS中,我可以从下面的excel中获取数据,但这仅仅是一种情况。 我想制作一个GAMS代码,用于从循环语句中读取excel表格中所有场景的数据 Table n(t,b) $call =xls2gms r="nonbooked!A2:I9" i="excelveri.xlsx" o="nbooked.inc" $include nbooked.inc ;

无法用Excel VBA创build有效的退出条件

首先发布所有,所以原谅任何语法错误:我一直在工作电子表格很长一段时间。 其目的是logging我的电话,因为我在一个大容量的入境宾客服务呼叫中心工作。 有时我需要跟进我的客人。 工作表是列A:K,从第5行开始 最终,我编写了一个程序来检查我的logging,忽略任何有K列数据的行,然后当它find有效的数据时,将这些logging复制到另一个工作表,然后回到主工作表。 这部分工作正常,这里是代码: Sub Button2_Click() Dim sourceEmptyRow As Long Dim targetEmptyRow As Long Dim sourceRange As Range Dim targetRange As Range 'Make Today active Sheet1.Activate 'Set Variables sourceEmptyRow = FindNextEmpty(Range("K5")).Row Set sourceRange = Rows(sourceEmptyRow) sourceRange.Copy 'Activate Next Sheet sheetQ4.Activate 'Set Variables targetEmptyRow = FindNextEmpty(Range("A1")).Row Set targetRange = Rows(targetEmptyRow) targetRange.PasteSpecial Sheet1.Activate sourceRange.Delete Shift:=xlUp […]

在Excel参考文献范围内迭代最快的方法(“C20:F22”)

假设这个stringvariables是Excel中单元格的范围: string RangeReference = "C20:F22"; 所以我需要RangeReference中的引用列表像这样: List<string> GetAllReferencesInRange(string RangeReference) { } 对于这种情况,我们将有: GetAllReferencesInRange(RangeReference); //= //C20 //D20 //E20 //F20 //C21 //D21 //E21 //F21 //C22 //D22 //E22 //F22 如果RangeReference = "AG9:AI11"; 然后: GetAllReferencesInRange(RangeReference); //= //AG9 //AH9 //AI9 //AG10 //AH10 //AI10 //AG11 //AH11 //AI11 那么得到这个最快的方法是什么? 更新: 我知道这个问题根本无法与Excel相关,但是我使用OpenXML SDK 2.5来获取Excel文件和元素,所以也许在OpenXML中有一个我不知道的简单方法。

通过VBA UserForm中的checkbox控件循环

Excel VBA中有一个用户窗体,每个月都有一个checkbox。 select一个或多个会导致在工作表上显示所需的月份,我将代码复制粘贴了12次,并且工作正常,但是我确信有一个更好的方法来执行For循环。 这是我的代码的一部分(它继续12次): If CheckBox1.Value = True Then ActiveSheet.PivotTables("PivotTable1").PivotFields("month").PivotItems("1").Visible = True Else ActiveSheet.PivotTables("PivotTable1").PivotFields("month").PivotItems("1").Visible = False End If If CheckBox2.Value = True Then ActiveSheet.PivotTables("PivotTable1").PivotFields("month").PivotItems("2").Visible = True Else ActiveSheet.PivotTables("PivotTable1").PivotFields("month").PivotItems("2").Visible = False End If 我试着写: for i in range 1 to 12 然后写我的代码,但似乎有一个问题,当我把“我”,而不是数字。

比较字母数字数据,Excelsorting时忽略连字符

我正在学习Excel VBA编程,目前我正试图解决Excel如何对包含文本的单元格进行sorting的问题。 我在工作簿中有两张纸,每张都有自己的一列电子邮件地址以及其他数据。 我将引用Sheet1中的Column1和Sheet2中的Column2,其中只有列1可能具有重复的电子邮件地址列出。 我需要确定列1中的电子邮件是否在列2中find,并且每次这是真的,必须运行某些代码。 最初,我用两个嵌套的Do While循环解决了这个问题,其中外部循环从上到下遍历Column1中的每个单元,名为Cell1,而内部循环则比较Cell1和Column2中的每个单元,名为Cell2,也是从上到下如果发现相同的值,则尽早退出内部循环。 为了使效率更高,我想按升序对每列进行sorting,并且让每个Cell1只查看Column2,直到Cell2中的string的值大于Cell1中的string的值,并且当下一个Cell1被迭代时它将从最后一个循环停止的Cell2继续,因为较早的Cell2值都小于Cell1,并且不能有相同的值。 我想到的代码是通过Column1中每个单元格的外部循环,以及一个内部循环,如下所示: 'x1 is the row number of Cell1 'x2 is the row number of Cell2 'below is the code for the internal loop looking through Column2 Do While Sheets(2).Cells(x2, 1).Value <> 0 If LCase(Sheets(1).Cells(x1, 1).Value) < LCase(Sheets(2).Cells(x2, 1).Value) Then Exit Do ElseIf LCase(Sheets(1).Cells(x1, 1).Value) = LCase(Sheets(2).Cells(x2, 1).Value) […]

我如何创build一个会不断在后台运行的例程?

我在Excel中创build一个原始数据库,并且需要一个例程在不断的后台运行。 我将能够填写所需要的实际操作,但是我不知道如何使某个按键或某种macros的方式独立运行。 如果有人能给我一个独立运行的代码的例子,我可以简单地填写内容,这将是非常感激。

指定其他目录以循环通过Excel / VBA

我正在循环使用一个文件系统对象的一组目录,我想指定一个额外的目录来循环。 例如,我目前有: Sub test() Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(Directory) Set colSubfolders = objFolder.Subfolders For Each objSubfolder In colSubfolders ' take some action End For End Sub 但是,我想指定一个额外的文件夹循环,如: colSubfolders = colSubfolders + "additionalpath" For Each objSubfolder In colSubfolders …. 或者,是否可以在循环命令中指定多个对象,例如: For Each objSubfolder in colSubfolders, "additionalpath"

太多,如果或嵌套循环在Excel中

我有一个代码,有太多的嵌套语句 基本上我有1个单元格与100个单元格进行比较,这100个单元格有自己的价值,Excel只有最多64个循环。 有什么build议么? A = B = >> X = B1 A = C = >> X = C1 A = D = >> X = D1 A = E = >> X = E1 IF(L2=S2,T2,IF(L3=S3,T3,IF(L4=S4,T4,IF(L5=S5,T5,IF(L6=S6,T6,IF(L7=S7,T7,IF(L8=S8,T8,IF(L9=S9,T9,IF(L10=S10,T10,IF(L11=S11,T11)))))))))) 谢谢!

Excel VBA:重新启动循环计数器

嗨,我想重新启动我的循环计数器(iColumn)。 我循环遍历列来replace模板(TemplateSheet)中的多个单词。 循环遍历所有列(循环内)后是否可以重新启动循环计数器? 我唯一的问题是增加行值后,它回到循环(列),然后iColumn的值变为4,并终止内部循环。 While Sheets("DataSheet").Cells(iRow, 1).Value <> "" While Sheets("DataSheet").Cells(1, iColumn) <> "" sFind = Sheets("DataSheet").Cells(1, iColumn) sReplacement = Sheets("DataSheet").Cells(iRow, iColumn) sTemplate = Replace(sTemplate, sFind, sReplacement) iColumn = iColumn + 1 Wend Sheets("OutputSheet").Cells(iRow, 1) = sTemplate iRow = iRow + 1 Wend 问题在重新启动循环计数器被解决了。 但现在我不得不覆盖replace函数,因为它不存储新的replace数据。