VBA:给符合特定条件的行中的空白单元格赋值

那么我做了大量的研究,发现了很多相关的问题和答案,但是还不能完全弄清楚如何满足我的具体需求。

我正在创build一个项目,以创build一个macros,以纠正错误,并填写我使用的产品目录中常见的信息。

我试图完成的一件事是给列B中标记为“Y”的行中的每个空白单元赋予值“未分配”

我已经find了如何更改这些特定行中的每个单元格,并使其dynamic调整到行数。 我无法弄清楚如何做同样的列数。 在我的代码下面列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 

我包含了一些我已经留下的代码,所以你可以看看我已经尝试过了。

所以,我可以成功地更改该范围内所有单元格的值,但是我需要知道如何使用列数不总是相同的范围。 另外,我只想在这个范围内select空白单元格并赋值。 我想这将需要逐行进行,因为正确的标准并不总是在一起。

我很惊讶,当需要遍历表单上所有具有数据的单元格时,更多的人不使用“ UsedRange ” 。 (就在昨天,有人抱怨说, 在工作表上遍历所有17,179,869,184个单元格需要很长的时间 )

这个例子列出&计数“使用”的范围,并将很容易地适应您的需求。

 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