ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 彭希仁

[讨论]有点难度的汇总

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-11-28 17:34 | 显示全部楼层

我喜欢从轮子做起,没办法,只能这样长啊!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-28 17:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用tycp在2007-11-28 17:29:10的发言:

用二维数组做的,比一维数组快很多!

Dim p As Integer, pp As Integer
Dim jxgz() As String, sf() As String


Sub check()
Dim m As Integer
Dim arr
Dim s1 As Integer, s2 As String
Dim over() As Boolean, over1() As Boolean
Dim box() As Integer
With Worksheets("数据")
p = .Range("a65536").End(xlUp).Row
arr = .Range("a2:c" & p)
End With
m = UBound(arr, 1)
ReDim over(1 To m) As Boolean
ReDim over1(1 To m) As Boolean
ReDim jxgz(1 To m) As String
ReDim sf(1 To m) As String

'提取不重复的机型故障-----------------------------------------------------------
p = 0
For i = 1 To m
If over(i) = False Then
p = p + 1
jxgz(p) = Trim(arr(i, 2)) & Trim(arr(i, 3))
over(i) = True
For j = 1 To m
If i <> j And over(j) = False Then
src = Trim(arr(i, 2)) & Trim(arr(i, 3))
des = Trim(arr(j, 2)) & Trim(arr(j, 3))
If src = des Then
over(j) = True
End If
End If
Next
End If
Next
'提取不重复的省份---------------------------------------------------------------
pp = 0
For i = 1 To m
If over1(i) = False Then
pp = pp + 1
sf(pp) = Trim(arr(i, 1))
over1(i) = True
For j = 1 To m
If i <> j And over1(j) = False Then
src = Trim(arr(i, 1))
des = Trim(arr(j, 1))
If src = des Then
over1(j) = True
End If
End If
Next
End If
Next

ReDim box(1 To p, 1 To pp + 1) As Integer
For i = 1 To m
s1 = findnum(Trim(arr(i, 2)) & Trim(arr(i, 3)), True)
box(s1, pp + 1) = box(s1, pp + 1) + 1
s1 = findnum(Trim(arr(i, 2)) & Trim(arr(i, 3)), True)
s2 = findnum(Trim(arr(i, 1)), False)
box(s1, s2) = box(s1, s2) + 1
Next

Range("d2").Resize(p, pp + 1) = box

End Sub
Function findnum(str As String, flag As Boolean) As Integer
Dim i As Integer
If flag = True Then
For i = 1 To p
If jxgz(i) = str Then
findnum = i
Exit For
End If
Next
Else
For i = 1 To pp
If sf(i) = str Then
findnum = i
Exit For
End If
Next
End If
End Function

试了一下,和题目要求有点不一样.

TA的精华主题

TA的得分主题

发表于 2007-11-28 17:59 | 显示全部楼层
QUOTE:
以下是引用彭希仁在2007-11-28 17:42:37的发言:

试了一下,和题目要求有点不一样.

题目还可以再改一下,更具有通用性,比如说,搞10几个字段,可以按任意几个字段进行分类汇总!!ADO+SQL应该可以搞出来!!纯数组不知道谁能搞得出来呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-28 19:12 | 显示全部楼层
QUOTE:
以下是引用tycp在2007-11-28 17:59:41的发言:

题目还可以再改一下,更具有通用性,比如说,搞10几个字段,可以按任意几个字段进行分类汇总!!ADO+SQL应该可以搞出来!!纯数组不知道谁能搞得出来

一步一步来

TA的精华主题

TA的得分主题

发表于 2007-11-28 19:48 | 显示全部楼层
大哥这个代码,我就看不明白了,还是先把我的作业完成了,再来看,强啊

TA的精华主题

TA的得分主题

发表于 2007-11-29 09:09 | 显示全部楼层

彭兄,你那个捡金币的算法是怎么想出来的?你有没有学过类似的算法思想!如果没学类似的东西就能想出来 ,真的是天才啊!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-29 09:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用tycp在2007-11-29 9:09:02的发言:

彭兄,你那个捡金币的算法是怎么想出来的?你有没有学过类似的算法思想!如果没学类似的东西就能想出来 ,真的是天才啊!!!

我是半路出家的和尚,没有经过专业的培训。要说东西从那里学来的,只就经常到EH里面逛逛,聊聊,再自已多写写

TA的精华主题

TA的得分主题

发表于 2007-11-29 10:11 | 显示全部楼层
QUOTE:
以下是引用彭希仁在2007-11-29 9:20:40的发言:

我是半路出家的和尚,没有经过专业的培训。要说东西从那里学来的,只就经常到EH里面逛逛,聊聊,再自已多写写

厉害,你说什么样的人才称的是天才,就是没学过动态规划,就写出了跟动态规划一样的程序!!!就是无师自通,自创算法的人称的上是天才!!其他经过强化训练才达到的不算!

TA的精华主题

TA的得分主题

发表于 2007-11-29 11:18 | 显示全部楼层

 

我已检验过楼主,严重同意楼上的说法。
[此贴子已经被作者于2007-11-29 11:19:11编辑过]

TA的精华主题

TA的得分主题

发表于 2007-11-29 11:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用tycp在2007-11-29 10:11:45的发言:

厉害,你说什么样的人才称的是天才,就是没学过动态规划,就写出了跟动态规划一样的程序!!!就是无师自通,自创算法的人称的上是天才!!其他经过强化训练才达到的不算!

一个论坛不能容下两个天才,除非一公一母,他的程序是凑出来的好伐,这也算是天才,那我岂不是天才中的天才,人称the gods of god。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 07:30 , Processed in 0.038907 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表