你怎么能找到大数字网格中最大的差距?

时间:2015-07-09 14:20:13

标签: excel vba excel-vba excel-formula

您好我有一张包含单个大量网格值的Excel工作表,我想找到数字中最大的间隙(任何数字,不一定是两个相邻的数字)。我已经在这里看到了单列数据的解决方案,但我有一个巨大的网格,我几乎可以肯定唯一值的数量大于现代excel中的最大行数,所以合并它们进入一个专栏不会起作用。关于如何使这项工作有效的任何想法?

如果它有用,可以做出一些假设:

  • 每列不包含空格或重复
  • 每列按升序排序
  • 并非所有列的长度都相同(实际上它们可能会有很大差异)
  • 最大的间隙可能很容易在两个不相邻的细胞之间

赞赏公式和VBA方法。

1 个答案:

答案 0 :(得分:1)

我认为你应该遍历所有列并计算这样的最大差距(我希望这很好用我目前没有Excel,所以我只是在这里写了这个,如果有任何错误出现评论它和我将纠正我的代码):

Sub LargestGap()
Dim RowCount as Double, ColumnCount as Double, i as Double, j as Double, maxgap as Double
' largest gap
Dim lgc as string
' for performance
Application.Screenupdating=False
' this is just a sample set your columncount to the max columns
ColumnCount = 20
maxgap=0


For i=1 to ColumnCount
  j=0
  do until Cells(i,j+1)=""
    If Cells(i,j)<>Cells(i,j+1) then
      If (Cells(i,j+1)-Cells(i,j)) > maxgap then 
        maxgap=(Cells(i,j+1)-Cells(i,j))
        lgc=Cells(i,j+1).address
      End if
    End if
    j=j+1
  Loop
Next i
Application.Screenupdating=True
' the messagebox will tell you the adress of the largest gap's cell (the first in the bigger)
msgbox(lgc)
End Sub