Vba 查找选定单元格上方的第一个非空行
我想选择所选单元格上方的第一个非空行(减去偏移量)。例如,如果在工作表Vba 查找选定单元格上方的第一个非空行,vba,Vba,我想选择所选单元格上方的第一个非空行(减去偏移量)。例如,如果在工作表Grupos Produção中查找Machine 1,我想返回*******Grupo 1*********字符串 ********** Grupo 1 ********** Machine 1 Machine 2 到目前为止,我有以下内容,但它没有返回我需要的内容 Dim FindString As String Dim Rng As Range FindString = L
Grupos Produção
中查找Machine 1
,我想返回*******Grupo 1*********
字符串
********** Grupo 1 **********
Machine 1
Machine 2
到目前为止,我有以下内容,但它没有返回我需要的内容
Dim FindString As String
Dim Rng As Range
FindString = Lcell.Value
If Trim(FindString) <> "" Then
With Sheets("Grupos Produção").Range("A:Z")
Set Rng = .Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
Application.Goto Rng, True
upperRow = .Cells(Rng.Row, Rng.Column - 1).End(xlDown).Row
Else
MsgBox "Nothing found"
End If
End With
End If
Dim FindString作为字符串
变暗Rng As范围
FindString=Lcell.Value
如果修剪(FindString)“,则
带有板材(“Grupos Produção”)。范围(“A:Z”)
Set Rng=.Find(What:=FindString_
之后:=.Cells(.Cells.Count)_
LookIn:=xlValues_
看:=xlother_
搜索顺序:=xlByRows_
SearchDirection:=xlNext_
匹配案例:=假)
如果不是,那么Rng什么都不是
应用程序。转到Rng,对
upperRow=.Cells(Rng.Row,Rng.Column-1).End(xlDown).Row
其他的
MsgBox“未找到任何内容”
如果结束
以
如果结束
这将在所选单元格上方找到第一个非空单元格(表示该行不为空)
您需要检查:
- 如果工作表的其余部分为空,它将返回与所选内容相同的地址李>
- 如果所选内容上方的所有单元格均为空,则它将从工作表底部开始,直到再次到达所选内容李>
*
通配符进行搜索,并使其从使用xlPrevious
的选择中查找
如果整个工作表为空,仍需要检查rng
是否为空
Sub Test()
Dim Rng As Range
With ThisWorkbook.Worksheets("Sheet1").Range("A:Z")
Set Rng = .Cells.Find(What:="*", _
After:=Selection, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not Rng Is Nothing Then
If Rng.Address = Selection.Address Or Rng.Row > Selection.Row Then
MsgBox "Nothing found"
Else
Rng.Select
End If
End If
End With
End Sub
我不确定我是否理解您的代码,但我认为您正在寻找以下内容:
...
...
If Not Rng Is Nothing Then
Do While Rng.Row > 1 And Rng.Offset(-1, 0).Value <> ""
Set Rng = Rng.Offset(-1, 0)
Loop
...
。。。
...
如果不是,那么Rng什么都不是
当Rng.Row>1和Rng.Offset(-1,0)时执行。值“”
设置Rng=Rng偏移(-1,0)
环
...
一旦找到该单元格,它就会向上移动,直到找到一个空单元格,并在之前停止 根据@Sam的回答,我设法得到了我需要的东西
If Not Rng Is Nothing Then
Do While Rng.Row > 1 And Rng.Offset(-1, 0).Value <> ""
Set Rng = Rng.Offset(-1, 0)
Loop
grupo = Rng.Offset(-1, -1).Value
Lcell.Value = grupo
End If
如果不是Rng什么都不是,那么
当Rng.Row>1和Rng.Offset(-1,0)时执行。值“”
设置Rng=Rng偏移(-1,0)
环
grupo=Rng.偏移量(-1,-1).值
Lcell.Value=grupo
如果结束
您能将@Sams answer勾选为已接受的答案吗?对不起,我很乐意这样做,但@Sam的答案不能解决这个问题。