VBA:为符合特定条件的行中的空白单元格指定一个值
我做了很多研究,找到了很多相关的问题和答案,但我不知道如何满足我的具体需求 我正在进行一个项目,以创建一个宏,该宏将纠正错误并填写我使用的产品目录中常见的信息 我试图完成的一件事是将值“unassigned”赋给B列中标记为“Y”的行中的每个空白单元格 我已经了解了如何更改这些特定行中的每个单元格,并使其根据行数进行动态调整。我搞不懂的是如何对列数做同样的处理。在我下面的代码中,B列和S列之间的所有内容都包含在内。B列将始终位于同一位置,但S列并不总是最后一列VBA:为符合特定条件的行中的空白单元格指定一个值,vba,excel,Vba,Excel,我做了很多研究,找到了很多相关的问题和答案,但我不知道如何满足我的具体需求 我正在进行一个项目,以创建一个宏,该宏将纠正错误并填写我使用的产品目录中常见的信息 我试图完成的一件事是将值“unassigned”赋给B列中标记为“Y”的行中的每个空白单元格 我已经了解了如何更改这些特定行中的每个单元格,并使其根据行数进行动态调整。我搞不懂的是如何对列数做同样的处理。在我下面的代码中,B列和S列之间的所有内容都包含在内。B列将始终位于同一位置,但S列并不总是最后一列 Dim tracked As St
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
我包括了一些我没有注释的代码,以便您可以看到我尝试了什么
因此,我可以成功地更改该范围内所有单元格的值,但我需要知道如何在列数不总是相同的范围内进行更改。另外,我希望只在这个范围内选择空白单元格,并为它们分配一个值。我想这需要一行一行地完成,因为正确的标准并不总是在一起。我很惊讶,当需要循环检查工作表中包含数据的所有单元格时,更多的人不使用。(就在昨天,有人抱怨在所有17179869184中循环花费的时间太长了…) 此示例列出并统计“已使用”范围,并可轻松适应您的需要
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
如果最后一列是12,并且在第6行,则
ActiveSheet.Range(“B6:S12”).Value=“Unassigned”
中的赋值命令。。。这可能不是你想要的,y
已经是一个范围了。。只需执行类似于y.resize(1,endColumn).SpecialCells(xlcelltypebanks).Value=“Unassigned”
的操作,您可能必须在代码中使用endColumn-1
,因为您是从列BBrilliant开始的!我甚至不知道调整大小的功能。这在不使用-1.ctrl+g打开即时窗口查看debug.print的情况下非常有效statements@Supa-别忘了✓ 接受一个有助于解决问题的答案…你将获得+2
声誉,答案的作者将获得+15
代表。当你达到15声誉时,你也可以▲ Upvote
任何有帮助的答案,都会奖励作者以及您以投票形式提供的反馈,从而使整个社区受益!