识别一行中最长范围的非空白连续单元格

identify longest range of non-blank contiguous cells in a row

我有一个 Excel 速度值电子表格(请参阅下面的 link),其中散布着一些空白。我正在尝试遍历每一行,并 return 每行中最长的一组连续非空白单元格的范围。我最终将使用范围地址来执行其他功能(即,对该范围内的值取平均值)。我以前使用下面的代码来计算一个范围内的列数,但还没有弄清楚如何只计算非空白单元格并继续在同一行中计数。

ColumnCount = Cells(1, Columns.Count).End(xlToLeft).Column

About the image: The highlighted columns represent depth & ensemble numbers, and the non-highlighted values represent velocity values that I would like to process. This spreadsheet continues for another 2,0000 columns. There's a lot of data!

谢谢!任何帮助将非常感激! 玛丽

可以使用Do Until循环和If语句从头到尾遍历整行。下面是一行的示例(目前没有 Excel,因此无法检查)。 maxLength 变量存储在每次迭代中找到的最大值。 Cells(1, currCol).Value = "" 用于检查连续范围是否仅由 1 个单元格组成(否则,它将计算空范围加上 2 个非空单元格再加上 1 个单元格)。

Dim maxLength as Integer
maxLength = 0
currCol = 1
totalCol = Columns.Count
If Cells(1, currCol).Value = "" Then
    currCol = Cells(1, currCol).End(xlToRight).Column
End If
Do Until currCol = totalCol
    prevCol = currCol
    If Cells(1, prevCol + 1).Value = "" Then
        maxLength = WorkSheetFunction.Max(maxLength, 1)
    Else
        currCol = Cells(1, currCol).End(xlToRight).Column
        maxLength = WorkSheetFunction.Max(maxLength, currCol - prevCol + 1)
    End if
    currCol = Cells(1, currCol).End(xlToRight).Column
Loop