分享

Excel VBA使用Sort方法对数据进行排序

 jeamychu 2016-07-07
在实际运用中对数据排序,采取录制宏的方式取得Sort方法代码,
由于理解得不够透彻,得出一些错误的理解:
1、Sort方法对非当前工作表无效;
2、Sort方法对隐藏的工作表无效。

但是在看完香川老师的2014年3月21日发的贴
再经过自己的反复测试后,知道上面两个观点是错误的,原因很简单:排序的数据范围是否指定了工作表,Sort参数Key引用的位置是否前面指定了工作表?
由于Sort语句的写法,前面是运行语句,中间有一个空格,后面才是参数,
因为有空格,所以前面语句指定的工作表并不对后面参数引用中生效,所以参数中还需要再指定,很多人都栽在这个地方,我就是例子。

今天发贴分享,
还有一个原因,就是想说一下香川老师的贴,有些地方容易让人误解或是关键点讲得不清楚(我相信香川老师肯定是精通的,但是在写文案的时候并不能完全表达她的意思)。
在这里我就把我的感悟分享一下,也帮帮其他有需要的人,因为香川老师的贴还是挺抢手的。
1、参数顺序有一个地方容易被忽略,就是下面红圈中的TYPE参数。

为什么这么说呢?大家仔细看一下参数的顺序,是不是很容易理解为:Key1,Order1,Key2,Order2,Key3,Order3……?
为什么三个排序关键字参数(一个关键字对应两个参数),唯独第二个关键字中间多一个Type参数呢?
什么意思?香川老师可没讲清楚。但是我相信很多人会忽略这个,那就会栽大跟头,因为每个参数都有固定的位置,
忽略一个,后面的顺序全部错乱。呵呵,那个查找错误的痛苦反正我是不想再经历了。
2、容易误导的地方,就是Header参数的位置(这个绝对与香川老师无关,只是阅读者的个人习惯)

2.jpg (30.98 KB, 下载次数: 2)

下载附件  保存到相册

2015-7-11 15:44 上传


图中蓝圈的位置是3,我就以为Header参数位于第三了,但是香川老师明确指出了代码中参数位于什么位置,如图中红圈位置。
这个呢,我是犯了这个错误,结果害得我可惨了。我之所以被误导也与贴子结尾部分有关,看下图:

图中“或根据默认为:”,不能这么说,这样写的默认就是手动仅指定了两个参数,关键字1和排序顺序,其他都默认。
而实战中,最少三个参数很重要,除了关键字1和排序顺序,标题行Header也很关键,这取决于排序区域是否选择了首行标题行,
如果包含首行标题,则必须指定Header为首行标题,不参与排序。
反之则指定为无标题,所有记录行进行排序。
如果不指定,则参数的意思让EXCEL自己去猜,这个会出大问题,反正我在实际开发写代码时,是经过反复测试得出的经验。
所以上面那一句“默认”真可谓“害人不浅”啊!呵呵,香川老师别怪我,是我理解有误,千万千万别生气哈!




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多