问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

excel编程

发布网友 发布时间:2022-04-23 13:55

我来回答

5个回答

热心网友 时间:2023-01-20 18:33

至少对我来说,这个程序并没有那么简单,你要求的报告文字那么多,

起码4个数组才能搞定,我程序写到一半就有点后悔了,但还是坚持写完了。

设计的是 选中要执行的列的单元格,如图

然后从菜单调出宏,找到相应宏名称,执行,就可以了。

代码其中有两块测试内容,可删除可不删除。留着的话,就是报告前面多几句话而已。另外,选区其中有空白单元格、以及0和1之外的内容没关系,程序会排除,只点数0和1。但是,不能选区全是空白单元格。且选区只能在同1列,不能2列或2列以上。由于定义数值类型是Integer,行数超过Integer长度上限不行,好像是3万多吧。

代码如下,自己在宏编辑页面新建一个模块,粘贴进去:

'=======以下是代码全文

Public Sub 统计1及0的连续出现次数()

'定义部分=================

Dim Shang As Integer '定义Shang为鼠标选择的首行

Dim Mhang As Integer '定义Mhang为鼠标选择的末行

Dim Lie As Integer '定义Lie为鼠标选择的列

Shang = Selection.Row '赋值,鼠标选择首行数

Mhang = Selection.Row + Selection.Rows.Count - 1 '赋值,鼠标选择的末行数

Lie = Selection.Column '赋值,列数

Dim Hl As Integer '定义Hl为行流水号

Dim Yis As Integer '定义Yis,用于临时存储1的连续数目

Dim nl As Integer '定义nl为内部临时流水号

Dim s1 As Integer 'ARBYY0数组上限

Dim s0 As Integer 'ARBYY1数组上限

Dim ARBYY1() As Integer '1连续出现次数的顺序序列记录数组

Dim ARBYY0() As Integer '0连续出现次数的顺序序列记录数组

'执行部分======================

Hl = Shang '流水号从所选的首行开始进行

s1 = 0 'ARBYY0数组上限归零

s0 = 0 'ARBYY0数组上限归零

Do While Hl <= Mhang '循环到所选行结束,逐行记录1和0重复出现的情况,记入ARBYY1和ARBYY0数组

If Cells(Hl, Lie) <> "" Then '单元格为空检测,不等于空则执行

If Cells(Hl, Lie) = 1 Then '单元格为1时做记录

nl = Hl

Yis = 0

Do While Cells(nl, Lie) = 1

Yis = Yis + 1

nl = nl + 1

Loop

s1 = s1 + 1

ReDim Preserve ARBYY1(1 To s1)

ARBYY1(s1) = Yis

Hl = Hl + Yis

ElseIf Cells(Hl, Lie) = 0 Then '单元格为0时做记录

nl = Hl

Yis = 0

Do While Cells(nl, Lie) <> "" And Cells(nl, Lie) = 0

Yis = Yis + 1

nl = nl + 1

Loop

s0 = s0 + 1

ReDim Preserve ARBYY0(1 To s0)

ARBYY0(s0) = Yis

Hl = Hl + Yis

Else '单元格为其它值时跳过

Hl = Hl + 1

End If

Else '单元格为空时,跳过单元格

Hl = Hl + 1

End If

Loop

'根据ARBYY0数组统计0的连续出现次数======================

Dim dd0 As Integer '记录序列数组内流水

Dim SUMYY0() As Integer '统计情况数组

Dim Mas0 As Integer '统计情况数组中的最大值

Dim lk0 As Integer '迭代流水

Dim jc0 As Integer '临时记次

Mas0 = Application.WorksheetFunction.Max(ARBYY0) '统计0出现的最大连续次数

For lk0 = 1 To Mas0 '从1次到最大连续次数,依次统计各出现了多少次,出现0次的跳过

jc0 = 0

For dd0 = LBound(ARBYY0) To UBound(ARBYY0)

If ARBYY0(dd0) = lk0 Then

jc0 = jc0 + 1

End If

Next dd0

ReDim Preserve SUMYY0(1 To lk0)

SUMYY0(lk0) = jc0

Next lk0

'--------------------

Dim SSGG0 As String

SSGG0 = "统计0连续出现情况"

Dim lj0 As Integer '连接流水

For lj0 = LBound(SUMYY0) To UBound(SUMYY0)

If SUMYY0(lj0) > 0 Then

SSGG0 = SSGG0 & ",0连续" & lj0 & "次次数" & SUMYY0(lj0)

End If

Next lj0

'根据ARBYY1数组统计1的连续出现次数======================

Dim dd1 As Integer '记录序列数组内流水

Dim SUMYY1() As Integer '统计情况数组

Dim Mas1 As Integer '统计情况数组中的最大值

Dim lk1 As Integer '迭代流水

Dim jc1 As Integer '临时记次

Mas1 = Application.WorksheetFunction.Max(ARBYY1) '统计1出现的最大连续次数

For lk1 = 1 To Mas1 '从1次到最大连续次数,依次统计各出现了多少次,出现0次的跳过

jc1 = 0

For dd1 = LBound(ARBYY1) To UBound(ARBYY1)

If ARBYY1(dd1) = lk1 Then

jc1 = jc1 + 1

End If

Next dd1

ReDim Preserve SUMYY1(1 To lk1)

SUMYY1(lk1) = jc1

Next lk1

'--------------------

Dim SSGG1 As String

SSGG1 = "统计1连续出现情况"

Dim lj1 As Integer '连接流水

For lj1 = LBound(SUMYY1) To UBound(SUMYY1)

If SUMYY1(lj1) > 0 Then

SSGG1 = SSGG1 & ",1连续" & lj1 & "次次数" & SUMYY1(lj1)

End If

Next lj1

'测试部分,可删除======================

Dim ff0 As Integer

Dim StrG0 As String

For ff0 = LBound(ARBYY0) To UBound(ARBYY0)

StrG0 = StrG0 & "," & ARBYY0(ff0)

Next ff0

Dim ff1 As Integer

Dim StrG1 As String

For ff1 = LBound(ARBYY1) To UBound(ARBYY1)

StrG1 = StrG1 & "," & ARBYY1(ff1)

Next ff1

'测试输出部分,可删除=====================

MsgBox "首行是" & Shang & ",末行是" & Mhang & ",选择的列是" & Lie & ",1连续序列的数组上限是" & UBound(ARBYY1) & ",0连续序列的数组上限是" & UBound(ARBYY0)

MsgBox "1的连续序列分别是" & StrG1 & "。0的连续序列分别是" & StrG0

MsgBox "0的最大重复次数是" & Mas0 & "。1的最大重复次数是" & Mas1

'=============================

'====输出最终结果,切勿删除=====

MsgBox SSGG0 & ",其余连续出现次数为0。"

MsgBox SSGG1 & ",其余连续出现次数为0。"

End Sub

'=====以上是代码全文

热心网友 时间:2023-01-20 19:51

数组公式
=SUM(--(FREQUENCY(IF(A1:A20,ROW(A1:A20),),IF(A1:A20,,ROW(A1:A20)))=2))
“=2”就是连续两次,连续三次可以=3
统计0两个IF反一下即可。

热心网友 时间:2023-01-20 21:26

写代码能够实现,只能在电脑上运行,不能在手机上哦追问恩,知道宏,但不会编程

热心网友 时间:2023-01-20 23:17

实在是太简单了,有点编程基础就可以编出来。追问关键是不会😂,所以请教大神!能贴出代码😜

热心网友 时间:2023-01-21 01:25

频率数组公式也可以完成追问怎么做呢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人脚出汗有酸味是怎么回事 脚的酸味是什么原因 请问南充有奥迪4S店或者奥迪专修店吗?电话号码是多少? ...不爱我了,对我已经死心了!我该怎么做,真的很爱她,好想挽回,我也不... 烂板凳的意思是什么 爸爸过世几个月了,为什么还梦见爸爸还没埋葬呢,看见爸爸的尸体_百度知 ... 眼睛结膜炎痒怎么办 结膜炎眼睛痒怎么缓解 结膜炎眼角痒怎么办 苹果电脑下载什么编辑器适合mac的视频剪辑软件有哪些 excel编程怎么做 捷信催款工作人员打电话骂人怎么办? excel怎么编程 如何用excel编程 Excel可以编程? iphone5怎么把电脑上的图片保存到手机里 我的iphone5是有锁的请问现在解锁能用联通3G么?顺便求大神查下我手机版本和序列号是不是翻新的谢谢了! 日版iphone5可以在中国用么 关于日行iphone5的问题。 iphone5 如何设置开机密码,另外如何编辑短信存草稿 iphone5的快速充电连续式充电涓流充电 笔记本电脑win7怎么分盘 WIN7系统怎么分盘 win7系统下硬盘如何进行分区? 电脑Win7怎样分区 如何制作植物标本,书签 用绿色卡纸怎么做书签 书签怎么做漂亮又简单? 急求现在的保温杯的市场现状 及消费着群体 有没有不保温的杯子,我不用保温的杯子,但是要有盖子可以带出去喝的,那种杯子有吗?叫什么杯? EXCEL表格中怎样运用宏来进行编程? excel怎么用函数编程 利用什么软件可以编程调用EXCEL表格进行计算,并输出一个EXCEL表格 如何用EXCEL编程时间 PPT胶卷样式的模板 ppt怎么做老电影效果 求一个PPT里面ppt模板是模仿电影胶片中开场54321的,一个有这段的视频也行!另外一个这样的动态图 ppt中胶卷的效果怎么制作呀? 电影胶卷的原理 电影胶卷和c41胶卷的区别 普通胶卷和电影卷的区别 电影胶卷的发展 梦见自己生孩子是为什么 晚上梦见生孩子了怎么回事 劳务收入的税率是多少 晚上老是梦见生小孩是怎么回事? 劳务费的税率是多少? 梦见生孩子是怎么回事 总梦见生小孩怎么回事 应税劳务税率是什么