ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享]最新排序法(中括号[]的应用)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-7-26 17:29 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:数据类型和基本语句
本帖最后由 chrisfang 于 2014-2-15 12:07 编辑


Sub 升序()
[b1:b9] = [SMALL(A1:A9,ROW(A1:A9))*ROW(A1:A9)^0]
End Sub
Sub 降序()
[c1:c9] = [LARGE(A1:A9,ROW(A1:A9))*ROW(A1:A9)^0]
End Sub

当然也可以把它交给数组

貌似这个螃蟹是偶第一个吃的

补充(行数不能确定时)

Sub 降序()
Dim m%, arr, arra(), x%
m = [COUNTA(A:A)]
arr = [LARGE(A:A,ROW(A:A))*ROW(A:A)^0]
ReDim arra(1 To m, 1 To 1)
For x = 1 To m
    arra(x, 1) = arr(x, 1)
Next
Range("c1").Resize(m, 1) = arra
End Sub

下面这些语句感觉很有实用性

MsgBox [MAX(1*LEFT(A1:A10000,2))]
MsgBox [MAX(1*MID(A1:A10000,1,2))]
MsgBox [max(len(a1:a10000))]

相关帖链接

http://club.excelhome.net/viewthread.php?tid=341253&px=0

[此贴子已经被作者于2008-7-26 22:01:15编辑过]

[分享]最新排序法

[分享]最新排序法

点评

知识树索引内容:Evaluate和[]的应用  发表于 2014-2-15 12:06

TA的精华主题

TA的得分主题

发表于 2008-7-26 17:53 | 显示全部楼层

回复:(HHAAMM)[分享]最新排序法

好思路。

这“[]”一直以为仅用于单元格引用,原来对表达式也有用。

调用工作表函数方便多了:[sumproduct((a1:a9)*(b1:b9))]

TA的精华主题

TA的得分主题

发表于 2008-7-26 18:04 | 显示全部楼层
呵呵,[]是evaluate得简写,在VBA板块已经用很久了。
精华??

不是针对楼主,版主,不好意思,骚扰。

regards


TA的精华主题

TA的得分主题

发表于 2008-7-26 18:14 | 显示全部楼层

螃蟹好吃,就是壳硬,方括号中不能用变量。

VBA中有专吃螃蟹工具 。推荐使用Evaluate

几乎所有在表里中的有 “名” 的对象 以及公式都可以往里面套,但限制在255字符之内

Range("c1:c9") = Evaluate("LARGE(A1:A9,ROW(A1:A9))*ROW(A1:A9)^0")
Range("b1:b9") = Evaluate("SMALL(A1:A9,ROW(A1:A9))*ROW(A1:A9)^0")

Set shp = Sheet1.[矩形 1] ''''''sheet1.矩形框对象

Set shp = Sheet1.Evaluate("矩形 " & 1 )'''效果同上 但可以使用变量

Range("c1:c9") = [c1:c9]  = Evaluate("c1:c9")

TA的精华主题

TA的得分主题

发表于 2008-7-26 19:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-26 19:35 | 显示全部楼层

三楼说的不知道,在论坛转悠几年,也没见这么用“[]”的

四楼LDY版主说的知道

变通一下,呵呵,权且这样当当变量吧

Sub 降序()
Dim m%
m = [COUNTA(A:A)]
Range("c1:c" & m) = [LARGE(A1:A100,ROW(A1:A100))*ROW(A1:A100)^0]
End Sub

[此贴子已经被作者于2008-7-26 19:49:07编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-26 19:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

不用[a65536].End(xlUp).Row

用[COUNTA(A:A)]

好像都是函数的方式

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-26 19:54 | 显示全部楼层

这样可以建立数组

arr = [LARGE(A:A,ROW(A:A))*ROW(A:A)^0]

只要确定最后一行的行数,也可以起到排序的作用

[此贴子已经被作者于2008-7-26 19:57:19编辑过]

TA的精华主题

TA的得分主题

发表于 2008-7-26 20:03 | 显示全部楼层

这种使用表达式的方法还真没见过。帮助文件中也没有提过这个事情。学习了。支持[em17][em17]

Evaluate 方法
请参阅 应用于 示例 特性
将一个 Microsoft Excel 名称转换为一个对象或者一个值。

expression.Evaluate(Name)

expression   对于 Application 对象可选,对于 Chart 对象,DialogSheet 对象,和 Worksheet 对象必需。该表达式返回“应用于”列表中的对象之一。

Name   String 类型,必需。对象名使用 Microsoft Excel 的命名约定。

说明
下列几类 Microsoft Excel 名称可以使用此方法:

A1-样式引用。可以引用任何以 A1-样式符号表示的单个单元格。所有引用都是绝对引用。
单元格区域。可在区域引用中使用区域、交集和联合运算符(分别为冒号、空格和逗号)。
已定义的名称。可用宏语言指定任意名称。
外部引用。可以使用“!”操作符引用另一工作簿上的单元格或已定义的名称。例如,Evaluate("[BOOK1.XLS]Sheet1!A1")。
注意   使用方括号(例如,"[A1:C5]")与用字符串参数调用 Evaluate 方法是等效的。例如,下列表达式对是等价的。

[a1].Value = 25
Evaluate("A1").Value = 25
trigVariable = [SIN(45)]
trigVariable = Evaluate("SIN(45)")
Set firstCellInSheet = Workbooks("BOOK1.XLS").Sheets(4).[A1]
Set firstCellInSheet = _
    Workbooks("BOOK1.XLS").Sheets(4).Evaluate("A1")
使用方括号的优点在于代码较短。使用 Evaluate 的优点在于参数是字符串,这样您既可以在代码中构造该字符串,也可以使用 Visual Basic 变量。

示例
本示例将工作表 Sheet1 上 A1 单元格的字体设置为加粗。

Worksheets("Sheet1").Activate
boldCell = "A1"
Application.Evaluate(boldCell).Font.Bold = True

TA的精华主题

TA的得分主题

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

一楼做了补充,基本解决了“变量”问题

菜鸟胡乱摸索,但愿能起到一些抛砖引玉的作用,谢谢大家支持!!!!!!!!!

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

本版积分规则

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

GMT+8, 2024-11-24 19:12 , Processed in 0.041568 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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