Excel 根据特定文本选择范围,然后用文本填充
我试图编写一个代码,希望在a列中从头到尾查看选择范围,然后在B列中用“1”填充选择范围。但我的代码只填充了底部,而忽略了顶部。参考这张照片。我如何确保它通过每一行,当它遇到开始时,它将查找最近的结束并填充B列Excel 根据特定文本选择范围,然后用文本填充,excel,vba,Excel,Vba,我试图编写一个代码,希望在a列中从头到尾查看选择范围,然后在B列中用“1”填充选择范围。但我的代码只填充了底部,而忽略了顶部。参考这张照片。我如何确保它通过每一行,当它遇到开始时,它将查找最近的结束并填充B列 在VBA中使用Find是一种不稳定的工具。只需在单元格中循环,跟踪您是否处于开始和结束之间,这将简单得多: Sub Select() Dim LastRowA As Long, i As Long, b As Boolean With ThisWorkbook.Work
在VBA中使用Find是一种不稳定的工具。只需在单元格中循环,跟踪您是否处于开始和结束之间,这将简单得多:
Sub Select()
Dim LastRowA As Long, i As Long, b As Boolean
With ThisWorkbook.Worksheets("Sheet1")
LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRowA
If .Cells(i, 1).Value = "Start" Then
b = True
.Cells(i, 2).Value = 1
ElseIf .Cells(i, 1).Value = "End" Then
b = False
.Cells(i, 2).Value = 1
ElseIf b Then
.Cells(i, 2).Value = 1
End If
Next i
End With
End Sub
在VBA中使用Find是一种不稳定的工具。只需在单元格中循环,跟踪您是否处于开始和结束之间,这将简单得多:
Sub Select()
Dim LastRowA As Long, i As Long, b As Boolean
With ThisWorkbook.Worksheets("Sheet1")
LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRowA
If .Cells(i, 1).Value = "Start" Then
b = True
.Cells(i, 2).Value = 1
ElseIf .Cells(i, 1).Value = "End" Then
b = False
.Cells(i, 2).Value = 1
ElseIf b Then
.Cells(i, 2).Value = 1
End If
Next i
End With
End Sub
这将找到开始,循环直到找到结束。按要求进行测试和工作
Sub Select()
Dim LastRowA, i As Long
With ThisWorkbook.Worksheets("Sheet1")
LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRowA
If .Cells(i, 1) = "Start" Then
Do Until .Cells(i, 1) = "End"
.Cells(i, 2).Value = 1
i = i + 1
Loop
.Cells(i, 2).Value = 1
End If
Next i
End With
End Sub
这将找到开始,循环直到找到结束。按要求进行测试和工作
Sub Select()
Dim LastRowA, i As Long
With ThisWorkbook.Worksheets("Sheet1")
LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRowA
If .Cells(i, 1) = "Start" Then
Do Until .Cells(i, 1) = "End"
.Cells(i, 2).Value = 1
i = i + 1
Loop
.Cells(i, 2).Value = 1
End If
Next i
End With
End Sub
我测试了代码,但我不明白“b=True/False”是如何工作的,在这段代码中选择了开始和结束之间的范围。你介意解释一下吗?谢谢布尔变量仅存储真值或假值。在这里,我使用True来表示何时我是介于开始和结束之间的行号。当我们遇到开始时,它被设置为True;当我们遇到结束时,它被设置为False。对于不是开始或结束的任何其他行,代码查看b的值以确定它是否在开始和结束之间。如果介于开始和结束之间,b将为真,最后一个条件将通过,设置为1。如果不在开始和结束之间,b将为false,最后一个条件将失败,因此这些行上没有设置任何内容。感谢您的详细解释。从未想过布尔真/假可以这样使用!!谢谢我测试了代码,但我不明白“b=True/False”是如何工作的,在这段代码中选择了开始和结束之间的范围。你介意解释一下吗?谢谢布尔变量仅存储真值或假值。在这里,我使用True来表示何时我是介于开始和结束之间的行号。当我们遇到开始时,它被设置为True;当我们遇到结束时,它被设置为False。对于不是开始或结束的任何其他行,代码查看b的值以确定它是否在开始和结束之间。如果介于开始和结束之间,b将为真,最后一个条件将通过,设置为1。如果不在开始和结束之间,b将为false,最后一个条件将失败,因此这些行上没有设置任何内容。感谢您的详细解释。从未想过布尔真/假可以这样使用!!谢谢