Tag: 循环

如何在vba的一个条件下自动删除完整的行?

我是Vba的初学者。 我有以下简单的循环代码,以便从数据库中删除列9单元格上具有“na”值的行: Dim n As Integer n = 500 For i = 1 To n If Cells(i, 9).Value = "na" Then Rows("i:i").Select Selection.Delete Shift:=xlUp End If Next i End Sub 但是我得到了1004的错误,有谁能帮助我吗? 非常感谢你

如果当前单元格在VBA中为空,则获取相邻单元格的值

如果使用VBA当前单元格值为空,是否有可能的方法来复制相邻单元格的值? 示例: 如果我将通过单元格A循环,然后下一个单元格是空的,我将复制单元格B的值 这应该是我将生成后的实际报告: 因此,在我将生成后,单元格A中的空单元格应具有单元格B的值,如果两个单元格都有值,则代码将只复制第一个值。 你能帮我怎么做? 非常感谢! 🙂

For-Next Loop使用月末date作为迭代

我目前有一个“For Next”循环遍历不同的年份,我想修改它来循环date,特别是每个月的结束。 下面是我年度循环的通用代码。 清楚地循环遍历数年是相对容易的,因为你有一个开始年,这是一个整数,迭代是1.现在我想修改循环来遍历月份date的各个月末。 例如,2003年1月31日,2/28/2003,……,12/31/2007。 另外,请注意,对于每次迭代,我创build一个新的工作表,其当前迭代的名称作为工作表的名称。 同样,这一年相对容易,但使用“/”date使事情复杂化。 有没有人有任何想法使用月末date创build循环以及使用date创build工作表? 我确实有一个数组的date,所以代码可以引用表中的数组。 而表单的名称可以是任何格式。 例如,“mm-dd-yyyy”。 Sub YearLoop() Dim FirstYr As Integer Dim LastYr As Integer Dim Sheetname As String Dim Counter1 As Single FirstYr = Sheets("Model").Range("ax15").Value LastYr = Sheets("Model").Range("ax16").Value Counter1 = 0 For J = FirstYr To LastYr Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = J Sheetname = J 'do stuff Counter1 = Counter1+1 […]

做while循环不跳过它应该的文件

我正在构build一个macros来打开文件夹中的每个文件,检查它是否共享,如果是共享,保存并closures它。 它被embeddedLockFolder.xlsm文件夹中的一个文件中,所以我需要它跳过它所在的文件,否则它将在循环中途closures它。 最初有一个If Filename <> 'Lockfolder.xlsm' Then哪个工作正常,但我有嵌套If语句的麻烦If Activeworkbook.MultiUserEditing在那里,所以我认为可能会更容易把前者放在“做而“代码段”。 它不工作。 代码仍然打开我想要它跳过的文件,然后closures它,中止整个事情只有几个文件进入循环。 我究竟做错了什么? Sub Unshare() Dim FileName As String Dim cPwd As String FileName = Dir(CurDir() & "\" & "*.xls") Do While FileName <> "LockFolder.xlsm" Or FileName <> "" Application.DisplayAlerts = False Workbooks.Open (CurDir & "\" & FileName) If ActiveWorkbook.MultiUserEditing Then ActiveWorkbook.ExclusiveAccess ActiveWorkbook.Save ActiveWorkbook.Close Else ActiveWorkbook.Close End […]

将每个单元格的名称设置为其内容/值

我想要创build一个macros,select一个矩形范围的单元格,并将每个单元格的名称设置为单元格的值/内容。 根据我迄今为止的想法,我得到一个错误,虽然与cell.Name行。 Public Sub NameCell() Dim rng As Range Dim cell As Range Set rng = Range("A1:D1") For Each cell In rng cell.Name = CStr(cell.Value) Next End Sub

循环遍历范围,一旦find值,将单元格值和所有内容复制到下一列

这是我的第一篇文章。 我一直在教自己擅长的VBA,这是相当具有挑战性的。 反正我一直在循环和范围等工作 这是我的困境: Option Explicit Sub Move_Data() Dim i As Long Dim j As Long Dim LastRow As Long Dim LastColumn As Long Dim rng As Range Dim result As String result = "New Results" LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row LastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column For i = 3 To LastRow For j = 1 To […]

在Excel VBA中循环

我有一个逻辑,但不知道如何在Excel中执行/编码。 逻辑如下: 在办公室里,我需要根据自己的购买价值和年龄来找出很多旧文章的价值。 我不想使用VDB或其他内置function。 在我的电子表格中: A1 = "Table" (Name of the article) B1 = "01/01/2005" (Date of purchase in MM/DD/YYYY format) C1 = "1000" (Purchase value) D1 = "=DATEDIF(B1,TODAY(),"Y")" (Gives the age of article in years) E1 = "20" (Percentage depreciation for first year, which varies based on article) F1 = "=C1*10%" '(Depreciated value should […]

为包含stringsearch和sumifs的公式创buildVBA循环

我有一个公式,在另一张表上search列标题,然后一旦它发现它通过一些sumifs 。 我的数据大致如下所示: 1 8 10 11 12 Column E … Column N … Column O … Column AB Column AC Column AD Column AE Existing CCS data 100.00 100.00 120.00 150.00 列名上面的数字是重要的,我用它们来指定与我的公式相关的列。 现在,实际上只有less数几个单元对循环很重要。 单元格A1有我想终止的列号。 单元格B1有我想要开始的列号。 所以,如果我selectA1=8和B1=1 ,我希望下面的代码运行sumifs开始search列1 ,然后是第2列,一直到第8列,并将所有的值从每个循环加在一起,给我总数。 以上面的表格为例,如果我设置A1="12"和B1="10" ,我希望它吐出370.00 。 我现在的公式是这样的: =SUMIFS(INDEX('Program Data'!$A:$GA,0,MATCH(A1,'Data'!$1:$1,0)),'Data'!$N:$N,"CCS", 'Data'!$E:$E,"Existing")+SUMIFS(INDEX('Data'!$A:$GA,0,MATCH(A1,'Data'!$1:$1,0)), 'Data'!$N:$N,"CCS",'Data'!$E:$E,"Deep") 上面的公式只给出了包含A1数值string的列的总数,但是我需要一个包含B1 -> A1string的所有列的总和。 编辑 按照要求,这是我在这个循环失败的尝试。 由于B1本质上总是一个静态数字(意味着它总是45或88),所以我想我可以创build一个循环,告诉它以B1的值开始,并且根据需要创build并删除公式它。 所以对于这个,B1 = […]

macros改变地图的颜色(国家)

我需要帮助编写这个VBA的工作项目。 我有一个名为所有形状(国家)的地图,我有列U2:U52与国家缩写和列V2:V52与数据。 我需要一个macros来运行“If Then”语句来更改颜色,并根据input的数据循环遍历每个状态(数据行)。 Sub map1() Dim Rng As Range Dim ShapeName As String Dim SHP As Shape ShapeName = "AL" Set Rng = ThisWorkbook.Worksheets("Sheet1").Range("V2") Set SHP = Rng.Parent.Shapes(ShapeName) If Rng.Value <= 1.6 Then SHP.Fill.ForeColor.RGB = RGB(255, 0, 0) 'Red End If If Rng.Value > 1.6 And Rng.Value < 2.4 Then SHP.Fill.ForeColor.RGB = RGB(0, 255, […]

macros不会去下一个WS

出于某种原因,我的代码不会去下一个工作表,任何帮助,将不胜感激。 CleanUpMetricsBooks() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets Range("M:N,P:Q,U:V,X:Y").EntireColumn.Delete End Next ws End Sub