首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Excel VBA中查找一行中具有连续数据的单元格?

如何在Excel VBA中查找一行中具有连续数据的单元格?
EN

Stack Overflow用户
提问于 2009-10-20 04:57:30
回答 4查看 8.2K关注 0票数 3

给出图像...如果我知道有一些数据开始于范围(“B3”)。

如何找到包含连续数据的单元格,直到单元格E3?由于F3为空,因此不应考虑G3以后的版本。结果可以是range对象(B3:E3)或单元格计数(本例中为4)。

通过将B3设置为活动单元格并执行..

代码语言:javascript
复制
Range(ActiveCell, ActiveCell.End(xlToRight).Count

我得到了计数,但是这种方法是不可靠的,如果只有B3有数据,它会对单元格进行计数,直到工作表的末尾。

当然,这也可以通过循环遍历单元格来实现,但我更愿意使用工作表函数或其他一些有效的方法。

EN

回答 4

Stack Overflow用户

发布于 2009-10-20 13:19:13

您似乎正在尝试确定一行中使用的连续列数,从单元格B3开始。

下面的代码将根据您的数据返回$B$3:$E$3和4的值。如果只有单元格B3有数据,它将返回$B$3和1。

代码语言:javascript
复制
Sub GetDataArea()

Dim strCellToTest As String
Dim rngMyRange As Range
Dim lngColumns As Long

strCellToTest = "B3"

lngColumns = ActiveWorkbook.ActiveSheet.Range("" & strCellToTest).End(xlToRight).Column - 1

If lngColumns >= 256 Then
 Set rngMyRange = ActiveWorkbook.ActiveSheet.Range("" & strCellToTest)
 lngColumns = 1
Else
 Set rngMyRange = ActiveWorkbook.ActiveSheet.Range _
 (strCellToTest & ":" & Range("" & strCellToTest).Offset(0, lngColumns - 1).Address)
End If

MsgBox "Columns: " & lngColumns & vbCr & vbLf & "Range: " & rngMyRange.Address

End Sub
票数 3
EN

Stack Overflow用户

发布于 2009-10-20 08:49:52

您可以使用CurrentRegion属性。这将返回与指定范围相邻的范围。所以..。

代码语言:javascript
复制
Range("B3").CurrentRegion returns the range B3:E3
Range("B3").CurrentRegion.Columns.Count returns 4
Range("B3").CurrentRegion.Cells.Count also returns 4

但是,如果您的数据位于第4行及其以下(假设您的数据位于B4:E6),那么您将获得以下结果

代码语言:javascript
复制
Range("B3").CurrentRegion returns the range B3:E6
Range("B3").CurrentRegion.Columns.Count returns 4
Range("B3").CurrentRegion.Cells.Count returns 16

这就是你要找的东西吗?

票数 1
EN

Stack Overflow用户

发布于 2009-12-23 10:01:42

我喜欢使用一个函数对包含值的列进行计数,直到遇到空单元格。返回值可用于设置FOR NEXT循环,以遍历一个表。下面是我会怎么做:

代码语言:javascript
复制
Sub tester()
    Dim Answer
    Answer = CountColumns(3, 2)
    MsgBox "There are " & Answer & " columns."
 End Sub
Public Function CountColumns(ByVal startRow As Integer, ByVal startColumn As Integer)
    'Pass starting location in spreadsheet for function to loop through until
    'empty cell is found. Return count of columns function loops through

     Do While ActiveSheet.Cells(startRow, startColumn).Value <> ""
        startColumn = startColumn + 1
     Loop
     startColumn = startColumn - 1
     CountColumns = startColumn
 End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1592536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档