
给出图像...如果我知道有一些数据开始于范围(“B3”)。
如何找到包含连续数据的单元格,直到单元格E3?由于F3为空,因此不应考虑G3以后的版本。结果可以是range对象(B3:E3)或单元格计数(本例中为4)。
通过将B3设置为活动单元格并执行..
Range(ActiveCell, ActiveCell.End(xlToRight).Count我得到了计数,但是这种方法是不可靠的,如果只有B3有数据,它会对单元格进行计数,直到工作表的末尾。
当然,这也可以通过循环遍历单元格来实现,但我更愿意使用工作表函数或其他一些有效的方法。
发布于 2009-10-20 13:19:13
您似乎正在尝试确定一行中使用的连续列数,从单元格B3开始。
下面的代码将根据您的数据返回$B$3:$E$3和4的值。如果只有单元格B3有数据,它将返回$B$3和1。
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发布于 2009-10-20 08:49:52
您可以使用CurrentRegion属性。这将返回与指定范围相邻的范围。所以..。
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),那么您将获得以下结果
Range("B3").CurrentRegion returns the range B3:E6
Range("B3").CurrentRegion.Columns.Count returns 4
Range("B3").CurrentRegion.Cells.Count returns 16这就是你要找的东西吗?
发布于 2009-12-23 10:01:42
我喜欢使用一个函数对包含值的列进行计数,直到遇到空单元格。返回值可用于设置FOR NEXT循环,以遍历一个表。下面是我会怎么做:
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 Functionhttps://stackoverflow.com/questions/1592536
复制相似问题