Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:为符合特定条件的行中的空白单元格指定一个值_Vba_Excel - Fatal编程技术网

VBA:为符合特定条件的行中的空白单元格指定一个值

VBA:为符合特定条件的行中的空白单元格指定一个值,vba,excel,Vba,Excel,我做了很多研究,找到了很多相关的问题和答案,但我不知道如何满足我的具体需求 我正在进行一个项目,以创建一个宏,该宏将纠正错误并填写我使用的产品目录中常见的信息 我试图完成的一件事是将值“unassigned”赋给B列中标记为“Y”的行中的每个空白单元格 我已经了解了如何更改这些特定行中的每个单元格,并使其根据行数进行动态调整。我搞不懂的是如何对列数做同样的处理。在我下面的代码中,B列和S列之间的所有内容都包含在内。B列将始终位于同一位置,但S列并不总是最后一列 Dim tracked As St

我做了很多研究,找到了很多相关的问题和答案,但我不知道如何满足我的具体需求

我正在进行一个项目,以创建一个宏,该宏将纠正错误并填写我使用的产品目录中常见的信息

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

我已经了解了如何更改这些特定行中的每个单元格,并使其根据行数进行动态调整。我搞不懂的是如何对列数做同样的处理。在我下面的代码中,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
我包括了一些我没有注释的代码,以便您可以看到我尝试了什么


因此,我可以成功地更改该范围内所有单元格的值,但我需要知道如何在列数不总是相同的范围内进行更改。另外,我希望只在这个范围内选择空白单元格,并为它们分配一个值。我想这需要一行一行地完成,因为正确的标准并不总是在一起。

我很惊讶,当需要循环检查工作表中包含数据的所有单元格时,更多的人不使用。(就在昨天,有人抱怨在所有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
任何有帮助的答案,都会奖励作者以及您以投票形式提供的反馈,从而使整个社区受益!