ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_20] 数组合并与置换[已总结] ★★★★

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-14 16:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用shangyu在2005-4-14 16:25:00的发言:

.Cells(i).Value = .Cells(i) & "-----" c.Value = c.Value & "-----"

你不能在工作表的自定义函数中设置单元格的属性,如果在sub过程中调用该函数,则可以

谢谢shangyu版主的指导!

我再想想其他的方法,让各位见笑了

TA的精华主题

TA的得分主题

发表于 2005-4-14 17:28 | 显示全部楼层
以下是引用apolloh在2005-4-14 13:26:00的发言: 用frequency时你想过先排序没有?还有其他方法也可想,另外rongjun和gvntw已经做出来的方法要生成内存数组也有简便的方法。:)
其实我定义的名称中.也已经把各自的位置已经取出来了.

TA的精华主题

TA的得分主题

发表于 2005-4-14 17:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
算了,想了这么久,头都晕了.还是等着看各位老大的方法吧,再不就是总结了,我发现我每次做的都是最笨的方法.真是有点....[em04]

TA的精华主题

TA的得分主题

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

求救!没办法,实在是不知为什么,请看代码(函数的结果会有很多的空单元格,真是奇怪?)

Function Hre(rng As Range, rng1 As Range, n) Application.Volatile Dim Arr1() Dim Arr2() Dim Arr t1 = rng.Count t2 = rng1.Count ReDim Arr1(t1) ReDim Arr2(t2) For i = 1 To t1 Arr1(i) = rng.Cells(i) Next For i = 1 To t2 Arr2(i) = rng1.Cells(i) Next For i = 1 To t1 For j = 1 To t2 If Arr1(i) = Arr2(j) Then Arr1(i) = "-----" Arr2(j) = "-----" Exit For End If Next Next t = Join(Arr1) & Join(Arr2) t = Trim(Replace(t, "-----", "")) '为什么这里用trim函数不管用呢? Arr = Split(t) Hre = Arr(n - 1) End Function

2R0w654U.rar (12.34 KB, 下载次数: 85)
[此贴子已经被作者于2005-4-14 17:56:35编辑过]

TA的精华主题

TA的得分主题

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

也来凑一下热闹。

xcLuryTh.rar (4.96 KB, 下载次数: 186)

TA的精华主题

TA的得分主题

发表于 2005-4-14 22:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-4-15 01:11 | 显示全部楼层
以下是引用Long_III在2005-4-14 13:26:00的发言:

呵呵!

题目很有难度,我想编个自定义函数,都觉得不大可能

只能在表中相互查找一一对应的删!

自定义函数还不小菜一碟!定义2个数组表示这2个Range,循环第1个的各个元素,分别与第2个数组比较,如匹配就将2个数组中的匹配值统一改成一个特殊标记,循环完了后就在依次将2个数组中不是特殊标记的值赋给第3个数组(需要动态数组),最后将第3个数组赋给函数名返回。

TA的精华主题

TA的得分主题

发表于 2005-4-15 08:27 | 显示全部楼层

chenjun版主,我本意是这样的,后来做的时候突然想到了join函数,我最后一步就简化了,改为了下面这样

t = Join(Arr1) & Join(Arr2) t = Trim(Replace(t, "-----", "")) '为什么这里用trim函数不管用呢? Arr = Split(t) Hre = Arr(n - 1)

然而,问题也就产生了,最后arr数组里面有一些替换的空值不能去掉,我很想知道为什么不行?!

如果这种方法不行,那就真的只能按您说的,赋值给新数组了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-15 08:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用半榻茶烟在2005-4-14 21:47:00的发言:

也来凑一下热闹。

谢谢茶烟版主! 我下载研究一下:)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-15 08:33 | 显示全部楼层
以下是引用Long_III在2005-4-15 8:27:00的发言:

chenjun版主,我本意是这样的,后来做的时候突然想到了join函数,我最后一步就简化了,改为了下面这样

t = Join(Arr1) & Join(Arr2) t = Trim(Replace(t, "-----", "")) '为什么这里用trim函数不管用呢? Arr = Split(t) Hre = Arr(n - 1)

然而,问题也就产生了,最后arr数组里面有一些替换的空值不能去掉,我很想知道为什么不行?!

如果这种方法不行,那就真的只能按您说的,赋值给新数组了!

我没细看,不过你替换后是空值,不是空格用不着trim吧

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

本版积分规则

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

GMT+8, 2024-12-23 09:22 , Processed in 0.045930 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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