我已经做了很多研究,发现了很多相关的问题和答案,但是还不能弄清楚如何根据我的具体需要来提供这些信息。
我正在开发一个项目来创建一个宏来纠正错误并填写我合作的产品目录中常见的信息。
我想要完成的一件事是给予价值"未分配"对于标记为" Y"的行中的每个空白单元格。在B栏中。
我已经找到了如何更改这些特定行中的每个单元格并让它动态调整到行数。我无法弄清楚的是如何对列数做同样的事情。在下面的代码中,包含了B列和S列之间的所有内容。 B列将始终位于同一位置,但S列并不总是最后一列。
Dim tracked As String
Dim endCell As Range
Dim endRow As Long
Dim endColumn As Long
Dim start As Long
endRow = ActiveSheet.Range("D2").End(xlDown).Row
endColumn = ActiveSheet.Range("A1").End(xlToRight).Column
Let tracked = "B2:" & "B" & endRow
Set trackItem = ActiveSheet.Range(tracked)
For Each y In trackItem
If Left(y.Value, 1) = "Y" Then
'start = y.Row
'Set endCell = ActiveSheet.Cells(endColumn, start)
ActiveSheet.Range("B" & y.Row & ":" & "S" & endColumn).Value = "Unassigned"
End If
Next y
我添加了一些我已经注释掉的代码,以便您可以看到我尝试过的内容。
因此,我可以成功更改该范围内所有单元格的值,但我需要知道如何使用列数不会始终相同的范围来执行此操作。另外,我想仅在此范围内选择空白单元格并为其指定值。我想这将需要逐行完成,因为正确的标准并不总是在一起。
答案 0 :(得分:1)
我很惊讶当需要循环遍历工作表上有数据的所有单元格时,更多人不使用'UsedRange'。 (就在昨天,有人抱怨所有人都需要很长时间才能完成所有17,179,869,184 cells on a worksheet ...}
此示例列出&计算“使用”范围,并轻松适应您的需求。
Sub List_Used_Cells()
Dim c As Range, x As Long
For Each c In ActiveSheet.UsedRange.Cells
Debug.Print c.Address & " ";
x = x + 1
Next c
Debug.Print
Debug.Print " -> " & x & " Cells in Range '" & ActiveSheet.UsedRange.Address & "' are considered 'used'."
End Sub