VBA如何查找上一个非空单元格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA如何查找上一个非空单元格相关的知识,希望对你有一定的参考价值。
以此图为例。如果我当前定位在A8单元格的时候,我希望能查到上一个非空单元格的行号,也就是“4” ,当我定位在A11单元格的时候,我希望能查到上一个非空单元格的行号,也就是“8” 用VBA如何实现?
答:
Sub demo()Dim FindRng As Range
Dim C As Range
Dim FirstAddress As String
Set FindRng = Range("A:A")
With FindRng
Set C = .Find(what:="*", lookat:=xlPart)
If Not C Is Nothing Then
FirstAddress = C.Address
Do
C.Select
MsgBox "当前选定单元格:" & C.Address & vbCrLf & "上一个非空单元格行号:" & .FindPrevious(C).Row
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstAddress
End If
End With
End Sub追问
代码完全实现了我的问题。但是,这个代码以我的水平还看不太明白。所以我也没办法用到我自己的代码里面去。
我想再追问一下。如果当前单元格A8是以知条件。 如何用当前单元格A8的位置找到A 4 ? 也就是说,您不需要用循环语句,您就写一条代码通过A8来找上一个单元格的位置。 非常感谢。
MsgBox ActiveSheet.UsedRange.FindPrevious(Range("A8")).Row
参考技术A Private Sub Worksheet_SelectionChange(ByVal T As Range)Dim r&
If T.Column = 1 Then
For r = T.Row - 1 To 1 Step -1
If Cells(r, 1) <> "" Then
MsgBox r
Exit Sub
End If
Next
End If
End Sub
跨多个工作表查找最后一个非空单元格
【中文标题】跨多个工作表查找最后一个非空单元格【英文标题】:Finding the last non-empty cell across multiple sheets 【发布时间】:2013-02-23 23:08:26 【问题描述】:我想编写一个公式,查看其他工作表中特定单元格的值并返回最后一个非空值。
例如,如果:
Sheet2.B5 = 3 Sheet3.B5 = "" Sheet4.B5 = 6 Sheet5.B5 = 4 Sheet6.B5 = ""那么我希望公式返回 4。
非常感谢任何帮助,我已经为此工作了一段时间但没有成功。
【问题讨论】:
工作表集是否不变?或者它是否需要处理任意数量的工作表?它必须查看工作簿(文件)的所有工作表还是仅查看一些工作表? 如果它可以查看右侧的所有工作表,那就太好了,但我计划每次添加新工作表时只更新公式。 【参考方案1】:这会返回所需的结果,尽管它不是复杂的或自动的:
=if(not(isblank(Sheet6.B5)), Sheet6.B5,
if(not(isblank(Sheet5.B5)), Sheet5.B5,
if(not(isblank(Sheet4.B5)), Sheet4.B5,
if(not(isblank(Sheet3.B5)), Sheet3.B5,
if(not(isblank(Sheet2.B5)), Sheet2.B5,
"")))))
它开始查看最后一个 Sheet6.B5:如果它不是空白的,那就是要取的值,否则查看 Sheet5.B5:如果它不是空白......等等。最后如果都是空白,返回空白。
【讨论】:
以上是关于VBA如何查找上一个非空单元格的主要内容,如果未能解决你的问题,请参考以下文章
求vba模块,excel把所有日期单元格转换为yyyy-mm-dd文本