当我想找到最后使用的单元格值时,我使用:
Dim LastRow As Long
LastRow = Range("E4:E48").End(xlDown).Row
Debug.Print LastRow
Run Code Online (Sandbox Code Playgroud)
当我将单个元素放入单元格时,输出错误.但是当我在单元格中放入多个值时,输出是正确的.这背后的原因是什么?
我有一个数据集,其中包含大量有关客户的信息。我希望在Yes输入到 row 中的单元格时将此信息移动到另一个工作表中K,并且包含要从第一个工作表中删除的信息的原始行
我通过按下按钮来完成此操作。工作正常,并且行被删除,但是当然,当它删除该行时,行号会向上移动一位,因此会跳过下一行(第 15 行被删除,然后第 16 行变为第 15 行等),所以我认为反向循环是可行的方法,但我一生都无法弄清楚这一点 - 我认为这很简单!这是我正在使用的代码:
Private Sub UpdateSheet2_Click()
Dim c As Range
Dim Source As Worksheet
Dim Target As Worksheet
'Change worksheet designation as needed
Set Source = ActiveWorkbook.Worksheets("Sheet1")
Set Target = ActiveWorkbook.Worksheets("Sheet2")
For Each c In Source.Range("K:K") 'Covers all rows
If c = "yes" Then
Source.Range("A" & c.Row & ":B" & c.Row).Copy Target.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("D" & c.Row & ":F" & c.Row).Copy Target.Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
Source.Range("H" …Run Code Online (Sandbox Code Playgroud) 我已经将一系列单元格从一张纸复制并粘贴到我想要编辑的单元格中.该范围的单元格具有行和列(当然).我希望宏做的是通过D列并检查单元格背景颜色.如果除了白色之外还有背景颜色,我希望宏删除该单元所属的整行.因此,作为最终结果,我希望宏只保留D列中的单元格没有填充或白色背景颜色的行.下面提供的代码按照预期执行该任务,但需要花费很多时间.宏起诉的总行数为700.
我提供了迄今为止我使用过的两种不同类型的代码.它们都需要这么长时间.
代码1
With ws1
lastrow2 = ws1.Range("A" & Rows.Count).End(xlUp).Row
For i = lastrow2 To 2 Step -1
nodel = False
If .Cells(i, "D").Interior.ColorIndex = 2 Then
nodel = True
End If
If .Cells(i, "D").Interior.ColorIndex = -4142 Then
nodel = True
End If
If Not nodel Then
.Rows(i).EntireRow.Delete
End If
Next i
End With
Run Code Online (Sandbox Code Playgroud)
代码2
lastrow2 = ws1.Range("A" & Rows.Count).End(xlUp).Row
For Each cell In ws1.Range("D2:D" & lastrow2)
If Not cell.Interior.ColorIndex = 2 Or cell.Interior.ColorIndex = -4142 Then
If DeleteRange Is …Run Code Online (Sandbox Code Playgroud)