怎样统计EXCEL中连续空单元格的个数
4个回答
展开全部
'在本表建一更新 Button’
'方法:
'菜单栏空白处 帮助右边 点右键 点击 控件工具箱 找到并点击 命令按钮 然后在 工作表空白处 画出这个按钮 完成
'双击这个按钮 将下列代码全部 copy过去
'注意 完成调整大小 并将下列代码 COPY 完成后 要点控件工具箱 上的 退出设计模式 应该是第一个……。
Private Sub CommandButton1_Click()
x = 2
Cells(x, 2).Value = ""
While x < 3000 '可自行订义行数,这里设3000行,如能预知某列不为空则更好
temp = 0
y = 3
While y <= 256
If Trim(Cells(x, y).Value) = "" Then
temp = temp + 1
nows = Cells(x, 2).Value
If nows = "" And Cells(x, y).Value <> "" Then
Cells(x, 2).Value = temp
Else
isn = y + 1
If isn > 256 Then
isn = 256
End If
If nows < temp And Cells(x, isn) <> "" Then
Cells(x, 2).Value = temp
End If
End If
Else
temp = 0
End If
y = y + 1
Wend
x = x + 1
Wend
End Sub
'方法:
'菜单栏空白处 帮助右边 点右键 点击 控件工具箱 找到并点击 命令按钮 然后在 工作表空白处 画出这个按钮 完成
'双击这个按钮 将下列代码全部 copy过去
'注意 完成调整大小 并将下列代码 COPY 完成后 要点控件工具箱 上的 退出设计模式 应该是第一个……。
Private Sub CommandButton1_Click()
x = 2
Cells(x, 2).Value = ""
While x < 3000 '可自行订义行数,这里设3000行,如能预知某列不为空则更好
temp = 0
y = 3
While y <= 256
If Trim(Cells(x, y).Value) = "" Then
temp = temp + 1
nows = Cells(x, 2).Value
If nows = "" And Cells(x, y).Value <> "" Then
Cells(x, 2).Value = temp
Else
isn = y + 1
If isn > 256 Then
isn = 256
End If
If nows < temp And Cells(x, isn) <> "" Then
Cells(x, 2).Value = temp
End If
End If
Else
temp = 0
End If
y = y + 1
Wend
x = x + 1
Wend
End Sub
展开全部
在B2输入公式
=LARGE(MMULT(SMALL(IF(C2:IV2<>"",COLUMN(C:IV),999),ROW($1:$253)+{1,0}),{1;-1}),2)-1
或者
=LARGE(FREQUENCY(IF(C2:IV2="",COLUMN(C2:IV2)),IF(C2:IV2<>"",COLUMN(C2:IV2))),2)
输入方法 首先复制上面任意一个公式 双击B2单元格 按CTRL+C 之后是关键 按完之后不要直接回车 按 Ctrl+Shift+回车一起按就可以了
=LARGE(MMULT(SMALL(IF(C2:IV2<>"",COLUMN(C:IV),999),ROW($1:$253)+{1,0}),{1;-1}),2)-1
或者
=LARGE(FREQUENCY(IF(C2:IV2="",COLUMN(C2:IV2)),IF(C2:IV2<>"",COLUMN(C2:IV2))),2)
输入方法 首先复制上面任意一个公式 双击B2单元格 按CTRL+C 之后是关键 按完之后不要直接回车 按 Ctrl+Shift+回车一起按就可以了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'给你一个通用型的统计
Sub abc()
Dim i As Integer, x As Integer, y As Integer, y1 As Integer, r As Integer
Dim zx As Integer, zd As Integer
Dim MinRow As Integer
Dim MaxRow As Long
MinRow = UsedRange.Row '起始行
MaxRow = Cells.SpecialCells(xlCellTypeLastCell).Row '最大行
For r = MinRow To MaxRow '从起始行到最大行做一次循环
zx = Range("A" & r).End(xlToRight).Column '循环行的起始列
zd = Range("IV" & r).End(xlToLeft).Column - 1 '循环行的尾列
y1 = 0
For i = zx To zd '循环行内做列循环
If Cells(r, i) <> "" Then '如果该单元格不为空,则执行以下
x = Cells(r, i).End(xlToRight).Column '变量x等于下一个不为空的值的列数
y = x - zx - 1 'x-zx:第二个非空列减去起始列,再减1则为本范围内的空格数
If y > y1 Then y1 = y '如果y>y1,则y1=y,即y1变成当前的空格数,即最大的空格数
zx = x '把x的值赋值给zx,即把zx这个起始列变成新的下一个不为空的值的列数,以待下一个循环
End If
Next i
Range("b" & r) = y1 '最后把y1即最大空格数写入表中的B列r行对应的单元格中。
Next r
End Sub
Sub abc()
Dim i As Integer, x As Integer, y As Integer, y1 As Integer, r As Integer
Dim zx As Integer, zd As Integer
Dim MinRow As Integer
Dim MaxRow As Long
MinRow = UsedRange.Row '起始行
MaxRow = Cells.SpecialCells(xlCellTypeLastCell).Row '最大行
For r = MinRow To MaxRow '从起始行到最大行做一次循环
zx = Range("A" & r).End(xlToRight).Column '循环行的起始列
zd = Range("IV" & r).End(xlToLeft).Column - 1 '循环行的尾列
y1 = 0
For i = zx To zd '循环行内做列循环
If Cells(r, i) <> "" Then '如果该单元格不为空,则执行以下
x = Cells(r, i).End(xlToRight).Column '变量x等于下一个不为空的值的列数
y = x - zx - 1 'x-zx:第二个非空列减去起始列,再减1则为本范围内的空格数
If y > y1 Then y1 = y '如果y>y1,则y1=y,即y1变成当前的空格数,即最大的空格数
zx = x '把x的值赋值给zx,即把zx这个起始列变成新的下一个不为空的值的列数,以待下一个循环
End If
Next i
Range("b" & r) = y1 '最后把y1即最大空格数写入表中的B列r行对应的单元格中。
Next r
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的excel是07版或以上吗?是,加追问。不是,就算了,因为公式在03版不能用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询