Tag: 循环

Excel Sub / Function根据条件返回基于子列表中已完成项目的百分比

我试图创build一个子或function,将输出完成/不迟到的子任务的百分比。 此列表使用复制和粘贴添加项目,“类别”由用户input,“categorysub”使用= concatenate(类别+“sub”)。 顶部的date是= now()函数。 我添加了添加更多“潜艇”与macros的能力。 添加项目button只需复制并粘贴第二个项目的范围。 我想分/乐: 1)计算给定类别项目的总“子”数量(不是工作簿中的每个单个“问题”块,如红框所示) 2)计算给定类别项目/编号的完成“子”的数量(不超过与当前date对照的到期date) 3)输出完成/打开时间子数量在总子项目上 4)如果所有项目都是完整的输出“完成” 这是迄今为止的代码: Public Function Complt(category As String) Dim loc As Range loc = Application.Caller Dim categoryCell As Range categoryCell = Cell(loc.row, "C") Dim categorySub As String categorySub = category + "sub" Dim subcat As Range subcat = Cell(categoryCell.row – 1, "C") Dim assignedDateCell As […]

工作表循环types不匹配错误

在代码的第7行( If ActiveSheet.Cells(1, 47) = 1 Then 1,47 If ActiveSheet.Cells(1, 47) = 1 Then )迭代工作簿中的所有工作表时,出现“error13types不匹配”。 有谁知道如何解决这一问题? Dim y As Integer Dim c As Integer Dim ws_num As Integer Dim starting_ws As Worksheet Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning ws_num = ThisWorkbook.Worksheets.Count For y = 1 To ws_num ThisWorkbook.Worksheets(y).Activate If […]

如何停止在VBA循环

我创build了一个循环VBA来根据列A,B,C,D中的数据更新值。 但是一旦“D”列为空或者没有值,我就需要停止这个循环。 Sub Macro1() ' ' Set Do loop to stop when an empty cell is reached. Do Until IsEmpty(ActiveCell) Range("C2").Select Range("C2").End(xlDown).Offset(1, -2).Select Selection.ClearContents Range("C2").End(xlDown).Offset(0, -2).Select Range(Selection, Selection.End(xlUp)).Select Selection.FillDown Range("C2").End(xlDown).Offset(1, 0).Select ActiveCell.FormulaR1C1 = "Logged out" ActiveCell.Offset(1, 0).Select Loop End Sub

循环访问文件夹中的excel文件,提取列,并将它们粘贴到主文件中,其间有1个空列

我最近开始与VBA合作,并为自己分配了一个项目。 现在,这个macros应该循环遍历所有Excel文件的文件夹。 从它们中的每一个中提取一个范围,然后将它们粘贴在彼此旁边,并在主工作簿中间隔一个空列。 主手册 源工作簿1 我想添加另一个源工作簿,但我的声誉不允许这样做。 下面的代码是我在过去几周提出来的,但是我可以想象它可以更清晰。 现在,我无法在粘贴的列之间获得一个空列,并且出于某种原因,最后一个提取的列将被粘贴两次。 你能帮我解决这些问题吗? Sub SelectDataTestLoop2() 'Dim file location and file name etc. Dim FilePath As Variant Dim FileName As Variant Dim WBcount As Integer Dim OtherWB As Workbook Dim ThisWB As Workbook Dim ThisWS As Worksheet Dim WS As Worksheet 'Sheet in which the data needs to be pasted […]

在表中使用指定的标题find两列,差异所有行然后计算平均?

我有一个信息表,我想创build一个函数,在表范围内find两个与我提供的头相匹配的列,然后将这两列的每一行之间的差异存储为一个数组。 得到这个数组后,我想要函数返回数组的平均值,最大值和最小值。 输出将是水平的,并放置在3个相邻的单元格中。 因为表格非常大,我不得不手动执行此操作,因此我必须得到两行的许多排列(435个排列)的差异和平均值,因此手动计算将过于冗长乏味。 Function MatchDiff(header1 As String, header2 As String, tbl As Range) As Variant() Dim c, r, a, Lcol As Single Dim temp_spreads(), temp_final() As Variant Dim Average As Double Dim tbl1, tbl2 As Range ReDim temp_diff(0) ReDim temp_final(0) For c = 1 To tbl.Columns.Count If header1 = tbl.Cells(1, c) Then tbl1 = […]

VBA删除点并计数直到空间

我有一个工作表,其中包含数据如1.1.2.3美国,1.3.4加拿大。 我想遍历行并获取数字号码。 在这种情况下,美国的数字是4,加拿大是3.我的想法是去除点数,直到空间。 到目前为止,我发现如何删除点 strName = Trim("A:A") lSpace = InStr(1, strName, " ", vbTextCompare) digits = Trim(Left(strName, lSpace)) 但我不知道如何把这个与其他部分结合起来。 任何帮助,将不胜感激

如果条件满足,改变循环方向

我试图做一个循环,将逐步如果ZuluLY> ZuluTY,如果祖鲁<ZuluTY逆向步进 当我尝试这个时,我不断收到“else if if”编译错误。 循环工作正常,没有IF语句条件,但是当我添加IF语句,我得到错误。 这是一个代码片段,显示了我所尝试过的 If ZuluLY > ZuluTY Then For yr = LBound(Year_Arr) To UBound(Year_Arr) ElseIf ZuluLY < ZuluTY Then For yr = UBound(Year_Arr) To LBound(Year_Arr) Step -1 End If '….. code

range.rows.count在循环中不更新

很久以前的潜伏者,第一次海报。 预期的function是:对于列表A中的每个项目,扫描列表B并识别匹配。 将这些匹配添加到一个范围,然后在匹配计数> 0时输出。 这虽然是循环的第一次,但在所有进一步的迭代中,当WorkRng被正确地添加(我可以输出到一个单元格,它具有所有的数据)时,WorkRng.Rows.Count保持在1。 Dim pasteRng as Range Dim WorkRng as Range For i = 2 To LastRow Set WorkRng = Sheets("Output").Range("A1:G1") For j = 2 To outputCount If Worksheets("Output").Cells(j, 8).Value = Worksheets("Vendor List").Cells(i, 1).Value Then 'this line correctly identifies matches on subsequent loops Set pasteRng = Sheets("Output").Range("A" & j & ":G" & j) […]

VBA:添加一个条件到一个ElseIf循环

如果列F中的值不是0或#VALUE,那么我想在此循环中添加一个条件,将“差异”置于J列中。 任何和所有的build议,将不胜感激。 谢谢,目前的代码如下: Sub ERS_Vlookup() Dim Lastrow As Long Dim h As Long For h = 5 To Lastrow If IsError(ActiveSheet.Range("H" & h).Value) Or IsError(ActiveSheet.Range("F" & h).Value) Then ActiveSheet.Range("J" & h).Value = " " ElseIf ActiveSheet.Range("H" & h).Value <> " " And _ ActiveSheet.Range("F" & h).Value = 0 Then ActiveSheet.Range("J" & h).Value = "Paid" Else […]

将第一个空单元格中的多个工作表的范围复制到一个工作表中

所以我想要做的是如下: 我有一个工作手册,其中包含2个工作表,其中包含一般信息,30个工作表,包含学生信息(学号,姓名,成绩,最终工作组平均数),以及总览表(“Overzicht-OSC”)。 我想要做的只是复制学生人数(C列)和最终的工作组平均值(L列),并将这些值粘贴在我的概览表(“Overzicht-OSC”)中。 所有工作组最多包含25名学生; 往往更less,而且每个组的数量都不相同。 所以我想要粘贴第一组(在表3)中的数字在“Overzicht-OSC”,然后粘贴第二组(在表4)的数字在该信息等,以便在那里在最后的概述中,只会是学生人数和成绩,跳过空白单元格。 我为此写了下面的代码: Sub Overview() Dim I As Integer Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer Dim currentRowValue As String For I = 3 To 32 Range("B8:B34,L8:L34").Copy Sheets("Overzicht-OSC").Select sourceCol = 1 rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row For currentRow = 1 To rowCount currentRowValue = Cells(currentRow, sourceCol).Value If IsEmpty(currentRowValue) Then […]