ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 程序开发] [开_101] 词语整理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-2 15:10 | 显示全部楼层 |阅读模式
题目内容: A列各单元格中包含一个或几个词语,词语之间用逗号分开。 请按要求整理数据: 1、 一个单元格存放一个词语; 2、 重复的词语保留一个。 lCgmQOB9.rar (301.73 KB, 下载次数: 361) 注:测试时间与运行时间无本质的联系。
[此贴子已经被作者于2006-6-2 17:36:03编辑过]
单选投票, 共有 8 人参与投票

距结束还有: 3251 天8 小时25 分钟

您所在的用户组没有投票权限

词语整理

词语整理

TA的精华主题

TA的得分主题

发表于 2006-6-4 00:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

cIp1ye1I.rar (107.96 KB, 下载次数: 98)


题目是做出来了,但速度达不到要求,只好献丑了。

QUOTE:

谢谢。

[此贴子已经被山菊花于2006-6-29 19:33:14编辑过]

qt4SwUgx.rar

195.31 KB, 下载次数: 81

[VBA15 2006-06] 词语整理

TA的精华主题

TA的得分主题

发表于 2006-6-4 00:49 | 显示全部楼层
Option Base 1
Private Sub CommandButton1_Click()
t = Timer
Dim ar(1 to 65536, 1 to 1) ' 原代码: Dim ar(65536,1)
Set d = CreateObject("Scripting.Dictionary")
n = [a1].End(xlDown).Row
arr = Range("a1:a" & n)
j = 1
For i = 1 To n
Do While arr(i, 1) <> ""
b = InStr(arr(i, 1), ",")
If b = 0 Then
  a = arr(i, 1)
  arr(i, 1) = ""
Else
  a = Left(arr(i, 1), b - 1)
arr(i, 1) = Right(arr(i, 1), Len(arr(i, 1)) - b)
End If
If Not d.Exists(a) Then
  d.Add a, ""
  ar(j, 1) = a
  j = j + 1
End If
Loop
Next i
'ar = d.keys              '取得关键字
Range("b1:b" & d.Count) = ar
Range("g1") = Timer - t
End Sub
[此贴子已经被山菊花于2006-6-29 19:47:08编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-4 19:45 | 显示全部楼层

lg_cai兄真是太厉害!简直是快得不能再快了。[em17][em17][em17][em17][em17][em17]

本来我不想灌水的,实在是忍不住了。

TA的精华主题

TA的得分主题

发表于 2006-6-5 10:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

Attachment is too large to upload. Here are codes.
运行时间:1.140625
测试时间:69.5625

Private Sub CommandButton1_Click()
t = Timer
    Dim ds As Object, i As Long, arr, s As String
    i = Me.Range("a65536").End(xlUp).Row
    arr = Me.Range("a1:a" & i)
    arr = Application.Transpose(arr)
    s = Join(arr, ",")
    arr = Split(s, ",")
    Set ds = CreateObject("scripting.dictionary")
    On Error Resume Next
    For i = LBound(arr) To UBound(arr)
        ds.Add arr(i), i
    Next i
    On Error GoTo 0
    arr = ds.keys
    arr = Application.Transpose(arr)
    Me.Range("b1:b" & UBound(arr)) = arr
Range("g1") = Timer - t
End Sub

QUOTE:

Join用得好。

[此贴子已经被山菊花于2006-6-29 19:49:32编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-5 10:35 | 显示全部楼层
lg_cai: Do While arr(i, 1) "" 动行时出现“语法错误”如何处理?

TA的精华主题

TA的得分主题

发表于 2006-6-5 11:00 | 显示全部楼层
Do While arr(i, 1) ? "" ? 用不等号代替,发贴时不等号要被过滤掉,没办法
[此贴子已经被作者于2006-6-5 11:04:36编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-5 11:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用[I]andysky[/I]在2006-6-5 10:35:32的发言:[BR]lg_cai: Do While arr(i, 1) "" 动行时出现“语法错误”如何处理?
呵呵,这应该是论坛的问题了。括号后有不等号,但把代码复制上论坛就无法显示出来,这已经是个老问题了。

TA的精华主题

TA的得分主题

发表于 2006-6-5 23:23 | 显示全部楼层
cooloaky 的方法好快哦,在我的机器上只要 1.04s.不过dictionary的用法我不熟悉,得好好学习一下.

TA的精华主题

TA的得分主题

发表于 2006-6-8 04:14 | 显示全部楼层
以下是引用[I]cooloaky[/I]在2006-6-5 10:05:17的发言:[BR]Attachment is too large to upload. Here are codes. 运行时间:1.140625 测试时间:69.5625 Private Sub CommandButton1_Click() t = Timer Dim ds As Object, i As Long, arr, s As String i = Me.Range("a65536").End(xlUp).Row arr = Me.Range("a1:a" & i) arr = Application.Transpose(arr) s = Join(arr, ",") arr = Split(s, ",") Set ds = CreateObject("scripting.dictionary") On Error Resume Next For i = LBound(arr) To UBound(arr) ds.Add arr(i), i Next i On Error GoTo 0 arr = ds.keys arr = Application.Transpose(arr) Me.Range("b1:b" & UBound(arr)) = arr Range("g1") = Timer - t End Sub
Not work in Office 2000 2000 cant transpose more than 5461 items in an array
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 06:44 , Processed in 0.040257 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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