<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>仇朝权随笔</title><link>http://zawen.net/</link><description>MQCal工程算量Excel插件</description><item><title>MQCal工程算量计算表1.3.3.50（2025.12.23）发布</title><link>http://zawen.net/post/89.html</link><description>&lt;p&gt;2025.12.23&lt;/p&gt;&lt;p&gt;主要更新：&lt;/p&gt;&lt;p&gt;1、增加星级背景颜色，取消以前模板条件格式的*背景颜色。&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 条件格式的星背景在多次复制粘贴后，会变得相当凌乱，导致多行计算表出现运行缓慢的问题。&lt;/p&gt;&lt;p&gt;2、修复1万+行计算式文件，单行计算缓慢的问题。&lt;/p&gt;&lt;p&gt;3、改变写序号的策略，速度更快，增加一键写序号功能，不再依赖全部快速计算或者格式计算来重写序号。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;更新截图&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2025/12/202512281766899579718659.png&quot; alt=&quot;菜单位置.png&quot; width=&quot;1503&quot; height=&quot;205&quot; style=&quot;width: 1503px; height: 205px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2025/12/202512281766899744889010.png&quot; alt=&quot;Snipaste_2025-12-28_13-27-39.png&quot; width=&quot;1228&quot; height=&quot;550&quot; style=&quot;width: 1228px; height: 550px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;下载地址：&lt;a href=&quot;https://club.excelhome.net/thread-1723414-1-1.html?_dsign=c0c57158&quot; _src=&quot;https://club.excelhome.net/thread-1723414-1-1.html?_dsign=c0c57158&quot;&gt;https://club.excelhome.net/thread-1723414-1-1.html?_dsign=c0c57158&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下载地址2：&lt;a href=&quot;http://mythqiu.ysepan.com/&quot; _src=&quot;http://mythqiu.ysepan.com/&quot;&gt;http://mythqiu.ysepan.com/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Sun, 28 Dec 2025 13:19:45 +0800</pubDate></item><item><title>vba删除文件夹</title><link>http://zawen.net/post/88.html</link><description>&lt;p&gt;vba删除文件夹实列。Tips：删除前先删除文件夹内的文件。&lt;/p&gt;&lt;pre class=&quot;brush:vb;toolbar:false&quot;&gt;Sub&amp;nbsp;kk()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On&amp;nbsp;Error&amp;nbsp;Resume&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Kill&amp;nbsp;&amp;quot;c:\aaa\*.*&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RmDir&amp;nbsp;&amp;quot;c:\aaa&amp;quot;
End&amp;nbsp;Sub&lt;/pre&gt;&lt;p&gt;变形可以传递参数的：&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:vb;toolbar:false&quot;&gt;Sub&amp;nbsp;kk(FoldPath)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On&amp;nbsp;Error&amp;nbsp;Resume&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Kill&amp;nbsp;&amp;quot;&amp;quot;&amp;nbsp;&amp;amp;&amp;nbsp;FoldPath&amp;nbsp;&amp;amp;&amp;nbsp;&amp;quot;\*.*&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RmDir&amp;nbsp;FoldPath
End&amp;nbsp;Sub&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 03 Nov 2024 14:54:48 +0800</pubDate></item><item><title>中国网友怼美国共和党前亚太区主席方文格指责中国网友不同情犹子</title><link>http://zawen.net/post/87.html</link><description>&lt;blockquote&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;作者:葛上亭长(老韭菜头子)&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;中国网友怼美国共和党前亚太区主席方文格指责中国网友不同情犹太人&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;方文格先生你好:&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;看到你对网友的回复,我感到无比的震惊且愤怒。你所谓的二战期间如果全世界帮助犹太人，600万犹太人就不会被杀的言论，我要反驳的是，这不能成为你们屠杀巴勒斯坦人的理由。另外，这一言论存在错误，至少二战期间正在饱受侵略之苦的中国上海，就曾无条件的接受过五万多名犹太人，但他们的报答方式是勾结日本人，试图在中国东北地区建立犹太国家，这就是臭名昭著的&amp;quot;河豚计划&amp;quot;。庆幸的是，&amp;quot;河豚计划&amp;quot;最终失败。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;比这更令人难以置信的是，就在两周前，以色列大使馆的工作人员在上海街头公然在镜头前面称，他们所在的位置是法租界。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;当然，谈及犹太人和中国的渊源远不止如此。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;最早在宋代，犹太人作为流浪民族进入到了中国，在这片土地上繁衍生息。宋王朝作为中国古代最富饶的王朝，他们在这里享受到了足够多的红利。但在南宋国破家亡期间，一位犹太裔商人动用私兵大量杀害南宋臣民，将尸首作为投名状送给元军。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;还有鸦片战争，犹太人为了赚钱向中国倾销鸦片，中国人为此遭受到了巨大的创伤。阁下久居亚洲，对此应该不陌生吧。中国人从来没有为难过犹太人。中国现存最早的经典成熟于公元前10世纪，至今3000年。那时候你们应该刚刚被驱逐出所谓的一席之地，开启流浪生活。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;如果你听懂你们的过去，你应该清楚，埃及人收留了你们，你们几次三番的背叛埃及人，最后被法老屠杀驱除的往事。古罗马收留了你们，甚至设了一个供犹太裔生活的犹太行省。但你们却趁国王图拉真东征，国家守备空虚期间发动了叛乱，击败了少数守军之后，竟然疯狂屠杀平民，甚至剥下受害者的皮肤做衣服，吃他们的肉，用他们的尸体投喂野兽。在塞浦路斯、萨拉米斯、利比亚，一共有22万平民被犹太人屠杀。在平民面前，犹太人是如此凶残，却不料图拉真回师就将犹太人打回了原形。愤怒的罗马军团从美索不达米亚沿着地中海东岸一路杀到埃及，生活在这一代的犹太人几近灭绝。后来犹太人再次发动叛乱，又把屠刀对准了基督教，大量的信仰基督教的平民被杀害。但是很不幸，他们遇到了罗马最英明的国王之一哈德良,对犹太人展开了屠杀,杀掉了12万人。他吸取了图拉真时期的教训，驱散了犹太人。至此，犹太人正式开始了流亡世界的生活。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;数千年来，你们遭受过无数次屠杀，无数次驱逐，无数民族同情过你们，但你们却用无数次背叛回报他们。即便如此，你们却始终高傲的认为自己是优等民族，是高人一等的上帝选民。你们从不会在过往的教训当中反省，总结你们的文化里对其他民族带着天然的破坏、排斥和敌视。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;但是，这一切在中国行不通。中国人有自己的道德观，中国人从不觉得自己是优等民族，也从不惧怕任何优越感旺盛的民族。中国人有包容心，有廉耻心，懂得自我反思，懂得知恩图报。约翰拉贝一位在南京大屠杀期间救过中国的纳税党人，每个知道他的中国人，都对他心怀感激。两年前，他的孙子履职的医院缺乏药品，向中国驻德大使馆求助，中国人民第一时间捐钱捐物。二战期间，南斯大夫救了一个女孩，50年后，她下令无差别轰炸南联盟，亲手肢解这个地方。她就是美国第一位女国务卿，犹太裔奥尔布莱特。1947年，犹太人坐船来到巴勒斯坦，难民船上写着&amp;quot;德国摧毁了我们的生命，你们不要摧毁我们的希望。&amp;quot;善良的巴勒斯坦人接纳了你们，七十多年来，你们夜以继日的屠杀着收留你们的恩人，创造了有史以来最大的露天监狱。&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;全世界的人民还要怎样的同情才能让你们满足?&lt;/p&gt;&lt;p style=&quot;text-indent: 2em; text-align: left;&quot;&gt;中国古代经典有句话叫做:&amp;quot;国小而不处卑，力少而不畏强，无礼而侮大邻，贪愎而拙交者，可亡也。今日仅以此文相赠,请君自重。&lt;/p&gt;</description><pubDate>Fri, 14 Jun 2024 12:38:59 +0800</pubDate></item><item><title>MQCal工程算量V1.3.3.30（2024-6-10）更新增加辅助输入</title><link>http://zawen.net/post/86.html</link><description>&lt;p&gt;MQCal工程算量辅助输入来了！&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1、数据输入设置&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/06/202406101718005070736310.png&quot; alt=&quot;辅助输入原始数据记录&quot; width=&quot;1068&quot; height=&quot;622&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 1068px; height: 622px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;辅助输入框可以设置辅助输入所需要的数据，并且可以设置数据对应的列。这是一个完全自定义的设置，哪一列对应什么输入数据。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2、数据上屏查找：&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/06/202406101718005404158232.png&quot; alt=&quot;数据上屏查找&quot; width=&quot;721&quot; height=&quot;612&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 721px; height: 612px;&quot;/&gt;&lt;/p&gt;&lt;p&gt;数据查找支持拼英首字母查找，查找的数据会根据匹配度自动排序。&lt;/p&gt;&lt;p&gt;数据查找后，空格直接跳转到列表，可以输入数字直接数据上屏。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;3、辅助输入基本用法：&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;先设置数据，后在弹出的窗体输入查找字符（拼英首字母也可），然后 空格 （或 ↓，tab键切换到查找列表）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;输入框中数据：回车直接上屏。（始终关闭窗体，无论设置中是否设置关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;列表选中上屏方式：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回车（始终关闭窗体，无论设置中是否设置关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;空格 （按照设置是否关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;鼠标左键双击（按照设置是否关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;鼠标右键点击（按照设置是否关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;候选序号上屏（按照设置是否关闭）&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;4、设置辅助输入对预存数据每段会自动去重复，中文逗号兼容&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;需要抢先体验的，评论留下邮箱体验。&lt;/p&gt;</description><pubDate>Mon, 10 Jun 2024 15:36:01 +0800</pubDate></item><item><title>vba二维数组多key稳定排序</title><link>http://zawen.net/post/85.html</link><description>&lt;p&gt;此代码为&lt;a href=&quot;https://club.excelhome.net/thread-1245495-1-1.html&quot; target=&quot;_blank&quot; title=&quot;查看原帖地址&quot;&gt;&lt;strong&gt;Excel Home&lt;/strong&gt;论坛的香川裙子&lt;/a&gt;所做，经测试，效果不错。szpx函数返回的是一个一维数组，下标从1开始，里面记录的是原数组的行，直接调用即可。&lt;/p&gt;&lt;p&gt;比如：如数据arr是100行，7列的数组，排序给brr=szpx(arr,0,1,2),数组brr是brr(1)~brr(100),里面记录的是排序后原来数组的序号。（有点绕，好好理解下）&lt;/p&gt;&lt;p&gt;如果无法理解上面的话，用szbr输出排序后的数组即可。因为大多数时候没有必要输出数组，直接根据szpx后的结果在arr中取该值即可。&lt;/p&gt;&lt;p&gt;下面是改排序在mqcal工程算量中辅助输入的应用：（查找数据后排序）&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/06/202406101718005404158232.png&quot; alt=&quot;排序在mqcal辅助输入中的应用&quot; width=&quot;721&quot; height=&quot;612&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 721px; height: 612px;&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;brush:vb;toolbar:false&quot;&gt;Sub&amp;nbsp;test1px()&amp;nbsp;&amp;#39;【二维数组多key稳定排序】的应用示例
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;ar,&amp;nbsp;br,&amp;nbsp;nr,&amp;nbsp;sr,&amp;nbsp;h&amp;amp;,&amp;nbsp;i&amp;amp;,&amp;nbsp;j&amp;amp;,&amp;nbsp;m&amp;amp;,&amp;nbsp;n&amp;amp;,&amp;nbsp;r&amp;amp;,&amp;nbsp;tms#
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m&amp;nbsp;=&amp;nbsp;20000:&amp;nbsp;n&amp;nbsp;=&amp;nbsp;7
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReDim&amp;nbsp;a(1&amp;nbsp;To&amp;nbsp;m,&amp;nbsp;1&amp;nbsp;To&amp;nbsp;n)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1&amp;nbsp;To&amp;nbsp;m
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a(i,&amp;nbsp;1)&amp;nbsp;=&amp;nbsp;i
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;j&amp;nbsp;=&amp;nbsp;2&amp;nbsp;To&amp;nbsp;n
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&amp;nbsp;=&amp;nbsp;Int(Rnd&amp;nbsp;*&amp;nbsp;10):&amp;nbsp;If&amp;nbsp;r&amp;nbsp;Then&amp;nbsp;a(i,&amp;nbsp;j)&amp;nbsp;=&amp;nbsp;r
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ar&amp;nbsp;=&amp;nbsp;a&amp;nbsp;&amp;#39;以上生成m行n列的VBA内存二维数组
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ar&amp;nbsp;=&amp;nbsp;[k1].CurrentRegion.Value&amp;nbsp;&amp;#39;也可直接读取工作表区域得到二维数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sr&amp;nbsp;=&amp;nbsp;Array(3,&amp;nbsp;1,&amp;nbsp;5,&amp;nbsp;2,&amp;nbsp;7,&amp;nbsp;1)&amp;nbsp;&amp;#39;按权重优先顺序key、Sort值交替排列的一维数组。key为列序号、Sort值：1升序、2降序
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sr&amp;nbsp;=&amp;nbsp;Array(3,&amp;nbsp;-1,&amp;nbsp;5,&amp;nbsp;2,&amp;nbsp;7,&amp;nbsp;-1)&amp;#39;Sort值=-1时，升序并且空值会在最前面。(Sort=1时按工作表排序方法空值排在最后)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;Sort值=2时、降序而空值自然会在最后。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tms&amp;nbsp;=&amp;nbsp;Timer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nr&amp;nbsp;=&amp;nbsp;szpx(ar,&amp;nbsp;0,&amp;nbsp;sr)&amp;nbsp;&amp;#39;第1参数为待排序二维数组、第2参数为不参与排序的标题行的行数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;第3参数为按权重优先顺序key、Sort值交替排列的一维数组。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.Print&amp;nbsp;&amp;quot;Sort1:&amp;nbsp;&amp;quot;&amp;nbsp;&amp;amp;&amp;nbsp;Format(Timer&amp;nbsp;-&amp;nbsp;tms,&amp;nbsp;&amp;quot;0.00s&amp;nbsp;&amp;quot;)&amp;nbsp;&amp;amp;&amp;nbsp;&amp;quot;Sort&amp;quot;
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nr&amp;nbsp;=&amp;nbsp;szpx(ar,&amp;nbsp;0,&amp;nbsp;3,&amp;nbsp;1,&amp;nbsp;5,&amp;nbsp;2,&amp;nbsp;7,&amp;nbsp;1)&amp;nbsp;&amp;#39;也可这样写入参数。从第3个参数开始交替写入key、Sort值。推荐第1种写法。
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit&amp;nbsp;Sub
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下面是返回排序后数组结果?并输出到工作表的代码
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;br&amp;nbsp;=&amp;nbsp;szbr(ar,&amp;nbsp;nr,&amp;nbsp;0):&amp;nbsp;[k1].Resize(UBound(br)&amp;nbsp;-&amp;nbsp;LBound(br)&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;UBound(br,&amp;nbsp;2)&amp;nbsp;-&amp;nbsp;LBound(br,&amp;nbsp;2)&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;=&amp;nbsp;br
End&amp;nbsp;Sub
Function&amp;nbsp;szpx(ar,&amp;nbsp;h&amp;amp;,&amp;nbsp;ParamArray&amp;nbsp;sr())&amp;nbsp;&amp;#39;by&amp;nbsp;kagawa&amp;nbsp;2015/12/4-12/7&amp;nbsp;主要参考借鉴了Zamyi大侠的二维数组多key排序算法
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;第1参数ar：为待排序二维数组、第2参数h：为不参与排序的标题行的行数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;第3参数sr：为按权重优先顺序key、Sort值交替排列的一维数组、或以逗号分隔直接写入Key、Sort值。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;br,&amp;nbsp;y,&amp;nbsp;sr2,&amp;nbsp;i&amp;amp;,&amp;nbsp;i2&amp;amp;,&amp;nbsp;i3&amp;amp;,&amp;nbsp;i4&amp;amp;,&amp;nbsp;j&amp;amp;,&amp;nbsp;j2&amp;amp;,&amp;nbsp;k&amp;amp;,&amp;nbsp;l&amp;amp;,&amp;nbsp;u&amp;amp;,&amp;nbsp;s&amp;amp;,&amp;nbsp;t
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&amp;nbsp;=&amp;nbsp;LBound(ar)&amp;nbsp;+&amp;nbsp;h:&amp;nbsp;u&amp;nbsp;=&amp;nbsp;UBound(ar)&amp;nbsp;&amp;#39;获取数组起始、结束位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReDim&amp;nbsp;x&amp;amp;(l&amp;nbsp;To&amp;nbsp;u),&amp;nbsp;z(l&amp;nbsp;To&amp;nbsp;u&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;As&amp;nbsp;Boolean&amp;nbsp;&amp;#39;定义存放Index序号的数组x、标记段落结束位置的数组z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l&amp;nbsp;To&amp;nbsp;u
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x(i)&amp;nbsp;=&amp;nbsp;i&amp;nbsp;&amp;#39;Index赋值为数组行序号、这以后排序就只需改变这个Index位置、原始数组无需改变
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z(u&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;=&amp;nbsp;True&amp;nbsp;&amp;#39;标记最后结束位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;UBound(sr)&amp;nbsp;=&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;sr2&amp;nbsp;=&amp;nbsp;sr(0)&amp;nbsp;Else&amp;nbsp;sr2&amp;nbsp;=&amp;nbsp;sr&amp;nbsp;&amp;#39;判断第3参数是数组、还是多Key、Sort值序列
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j&amp;nbsp;=&amp;nbsp;sr2(0):&amp;nbsp;If&amp;nbsp;sr2(1)&amp;nbsp;Mod&amp;nbsp;2&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort1(ar,&amp;nbsp;x,&amp;nbsp;j,&amp;nbsp;l,&amp;nbsp;u)&amp;nbsp;Else&amp;nbsp;Call&amp;nbsp;QuickSort2(ar,&amp;nbsp;x,&amp;nbsp;j,&amp;nbsp;l,&amp;nbsp;u)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;按key1先进行QuickSort排序
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;sr2(1)&amp;nbsp;=&amp;nbsp;1&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;AZE(ar,&amp;nbsp;x,&amp;nbsp;j,&amp;nbsp;l,&amp;nbsp;u)&amp;nbsp;&amp;#39;如果Sort值=1则需要调用AZE过程、把空值移动到最后
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;k&amp;nbsp;=&amp;nbsp;2&amp;nbsp;To&amp;nbsp;UBound(sr2)&amp;nbsp;Step&amp;nbsp;2&amp;nbsp;&amp;#39;接着循环继续key2以后的排序
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;br&amp;nbsp;=&amp;nbsp;szbr(ar,&amp;nbsp;x,&amp;nbsp;h):&amp;nbsp;[k1].Resize(UBound(br)&amp;nbsp;-&amp;nbsp;LBound(br)&amp;nbsp;+&amp;nbsp;1,&amp;nbsp;UBound(br,&amp;nbsp;2)&amp;nbsp;-&amp;nbsp;LBound(br,&amp;nbsp;2)&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;=&amp;nbsp;br
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j2&amp;nbsp;=&amp;nbsp;sr2(k):&amp;nbsp;s&amp;nbsp;=&amp;nbsp;sr2(k&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;&amp;#39;读取排序key的列序号j2&amp;nbsp;和Sort值s
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l:&amp;nbsp;t&amp;nbsp;=&amp;nbsp;ar(x(i),&amp;nbsp;j):&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;i&amp;nbsp;&amp;#39;Do循环检查是否前key相同【注意，仅仅前key相同部分需要继续排序】
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;i2&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;If&amp;nbsp;z(i2)&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Do&amp;nbsp;Else&amp;nbsp;If&amp;nbsp;ar(x(i2),&amp;nbsp;j)&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;t&amp;nbsp;Then&amp;nbsp;z(i2)&amp;nbsp;=&amp;nbsp;True:&amp;nbsp;Exit&amp;nbsp;Do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;递增检查如果到了前前key的结束位置、或前key不同则停止退出Do循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;1&amp;nbsp;Then&amp;nbsp;&amp;#39;如果间隔&amp;gt;1&amp;nbsp;则本key需要排序处理【注意排序区间是小范围i,i2-1】
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;s&amp;nbsp;Mod&amp;nbsp;2&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort1(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;i,&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;1)&amp;nbsp;Else&amp;nbsp;Call&amp;nbsp;QuickSort2(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;i,&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;s&amp;nbsp;=&amp;nbsp;1&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;AZE(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;i,&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;1)&amp;nbsp;&amp;#39;如果Sort值=1则需要调用AZE过程、把空值移动到最后
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i2&amp;nbsp;&amp;gt;&amp;nbsp;u&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Do&amp;nbsp;Else&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i2:&amp;nbsp;t&amp;nbsp;=&amp;nbsp;ar(x(i),&amp;nbsp;j)&amp;nbsp;&amp;#39;循环到最后时退出、否则继续从i2重新开始Do循环
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j2&amp;nbsp;&amp;#39;更新前key列位置j
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;全部排序循环结束后、为保证最后的排序稳定性、检查最后的key值相同时必须按Index值排序。
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l:&amp;nbsp;t&amp;nbsp;=&amp;nbsp;ar(x(i),&amp;nbsp;j):&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;i
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;i2&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;If&amp;nbsp;z(i2)&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Do&amp;nbsp;Else&amp;nbsp;If&amp;nbsp;ar(x(i2),&amp;nbsp;j)&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;t&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Do&amp;nbsp;&amp;#39;检查方法相同
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;i&amp;nbsp;&amp;gt;&amp;nbsp;1&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort(x,&amp;nbsp;i,&amp;nbsp;i2&amp;nbsp;-&amp;nbsp;1)&amp;nbsp;&amp;#39;如果间隔&amp;gt;1&amp;nbsp;则Index值需要排序处理
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i2&amp;nbsp;&amp;gt;&amp;nbsp;u&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Do&amp;nbsp;Else&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i2:&amp;nbsp;t&amp;nbsp;=&amp;nbsp;ar(x(i),&amp;nbsp;j)&amp;nbsp;&amp;#39;循环到最后时退出、否则继续
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;szpx&amp;nbsp;=&amp;nbsp;x&amp;nbsp;&amp;#39;多key稳定排序处理结束、返回排序结果的Index数组x
&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;szpx&amp;nbsp;=&amp;nbsp;szbr(ar,&amp;nbsp;x,&amp;nbsp;h)&amp;nbsp;&amp;#39;或返回按排序后Index顺序引用返回的排序结果数组br
End&amp;nbsp;Function
Function&amp;nbsp;QuickSort(x,&amp;nbsp;l&amp;amp;,&amp;nbsp;u&amp;amp;)&amp;nbsp;&amp;#39;A-Z&amp;nbsp;QuickSort&amp;nbsp;&amp;#39;最后稳定排序时对相同key的Index值升序排序
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;i&amp;amp;,&amp;nbsp;j&amp;amp;,&amp;nbsp;n&amp;amp;,&amp;nbsp;r&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;u:&amp;nbsp;r&amp;nbsp;=&amp;nbsp;x((l&amp;nbsp;+&amp;nbsp;u)&amp;nbsp;\&amp;nbsp;2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;j
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;x(i)&amp;nbsp;&amp;lt;&amp;nbsp;r:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;#39;A-Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;x(j)&amp;nbsp;&amp;gt;&amp;nbsp;r:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;#39;A-Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;j&amp;nbsp;Then:&amp;nbsp;n&amp;nbsp;=&amp;nbsp;x(i):&amp;nbsp;x(i)&amp;nbsp;=&amp;nbsp;x(j):&amp;nbsp;x(j)&amp;nbsp;=&amp;nbsp;n:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;l&amp;nbsp;&amp;lt;&amp;nbsp;j&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort(x,&amp;nbsp;l,&amp;nbsp;j)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;u&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort(x,&amp;nbsp;i,&amp;nbsp;u)
End&amp;nbsp;Function
Function&amp;nbsp;QuickSort1(ar,&amp;nbsp;x,&amp;nbsp;j2&amp;amp;,&amp;nbsp;l&amp;amp;,&amp;nbsp;u&amp;amp;)&amp;nbsp;&amp;#39;A-Z&amp;nbsp;QuickSort&amp;nbsp;按原数组j2列对应内容进行升序排序
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;i&amp;amp;,&amp;nbsp;j&amp;amp;,&amp;nbsp;n&amp;amp;,&amp;nbsp;r
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;u:&amp;nbsp;r&amp;nbsp;=&amp;nbsp;ar(x((l&amp;nbsp;+&amp;nbsp;u)&amp;nbsp;\&amp;nbsp;2),&amp;nbsp;j2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;j
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;ar(x(i),&amp;nbsp;j2)&amp;nbsp;&amp;lt;&amp;nbsp;r&amp;nbsp;And&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;u:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;A-Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;ar(x(j),&amp;nbsp;j2)&amp;nbsp;&amp;gt;&amp;nbsp;r&amp;nbsp;And&amp;nbsp;j&amp;nbsp;&amp;gt;&amp;nbsp;l:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;A-Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;j&amp;nbsp;Then&amp;nbsp;n&amp;nbsp;=&amp;nbsp;x(i):&amp;nbsp;x(i)&amp;nbsp;=&amp;nbsp;x(j):&amp;nbsp;x(j)&amp;nbsp;=&amp;nbsp;n:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;l&amp;nbsp;&amp;lt;&amp;nbsp;j&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort1(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;l,&amp;nbsp;j)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;u&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort1(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;i,&amp;nbsp;u)
End&amp;nbsp;Function
Function&amp;nbsp;QuickSort2(ar,&amp;nbsp;x,&amp;nbsp;j2&amp;amp;,&amp;nbsp;l&amp;amp;,&amp;nbsp;u&amp;amp;)&amp;nbsp;&amp;#39;Z-A&amp;nbsp;QuickSort&amp;nbsp;按原数组j2列对应内容进行降序排序
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;i&amp;amp;,&amp;nbsp;j&amp;amp;,&amp;nbsp;n&amp;amp;,&amp;nbsp;r
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;u:&amp;nbsp;r&amp;nbsp;=&amp;nbsp;ar(x((l&amp;nbsp;+&amp;nbsp;u)&amp;nbsp;\&amp;nbsp;2),&amp;nbsp;j2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;j
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;ar(x(i),&amp;nbsp;j2)&amp;nbsp;&amp;gt;&amp;nbsp;r&amp;nbsp;And&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;u:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;#39;Z-A
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;While&amp;nbsp;ar(x(j),&amp;nbsp;j2)&amp;nbsp;&amp;lt;&amp;nbsp;r&amp;nbsp;And&amp;nbsp;j&amp;nbsp;&amp;gt;&amp;nbsp;l:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1:&amp;nbsp;Wend&amp;nbsp;&amp;#39;Z-A
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;j&amp;nbsp;Then&amp;nbsp;n&amp;nbsp;=&amp;nbsp;x(i):&amp;nbsp;x(i)&amp;nbsp;=&amp;nbsp;x(j):&amp;nbsp;x(j)&amp;nbsp;=&amp;nbsp;n:&amp;nbsp;i&amp;nbsp;=&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1:&amp;nbsp;j&amp;nbsp;=&amp;nbsp;j&amp;nbsp;-&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Wend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;l&amp;nbsp;&amp;lt;&amp;nbsp;j&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort2(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;l,&amp;nbsp;j)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;u&amp;nbsp;Then&amp;nbsp;Call&amp;nbsp;QuickSort2(ar,&amp;nbsp;x,&amp;nbsp;j2,&amp;nbsp;i,&amp;nbsp;u)
End&amp;nbsp;Function
Function&amp;nbsp;AZE(ar,&amp;nbsp;x,&amp;nbsp;j,&amp;nbsp;l&amp;amp;,&amp;nbsp;u&amp;amp;)&amp;nbsp;&amp;#39;Sort值=1时、把排序完成后的空值移动到最后
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;i&amp;amp;,&amp;nbsp;i2&amp;amp;,&amp;nbsp;y
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l&amp;nbsp;To&amp;nbsp;u
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;ar(x(i),&amp;nbsp;j)&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;&amp;quot;&amp;quot;&amp;nbsp;Then&amp;nbsp;&amp;#39;检查直到非空位置时停止
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y&amp;nbsp;=&amp;nbsp;x&amp;nbsp;&amp;#39;复制Index数组x到y
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;l&amp;nbsp;To&amp;nbsp;i&amp;nbsp;-&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x(u&amp;nbsp;-&amp;nbsp;i&amp;nbsp;+&amp;nbsp;i2&amp;nbsp;+&amp;nbsp;1)&amp;nbsp;=&amp;nbsp;y(i2)&amp;nbsp;&amp;#39;前面的空值对应Index值移动到最后
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;i&amp;nbsp;To&amp;nbsp;u
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x(i2&amp;nbsp;-&amp;nbsp;i&amp;nbsp;+&amp;nbsp;l)&amp;nbsp;=&amp;nbsp;y(i2)&amp;nbsp;&amp;#39;后面的非空值对应Index值移动到前面
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit&amp;nbsp;For
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
End&amp;nbsp;Function
Function&amp;nbsp;szbr(ar,&amp;nbsp;nr,&amp;nbsp;h&amp;amp;)&amp;nbsp;&amp;#39;Output&amp;nbsp;Result&amp;nbsp;Array&amp;nbsp;按排序后nr数组顺序、引用原数组对应Index值各列返回数组排序结果
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;br,&amp;nbsp;i&amp;amp;,&amp;nbsp;i2&amp;amp;,&amp;nbsp;j2&amp;amp;,&amp;nbsp;l&amp;amp;,&amp;nbsp;l2&amp;amp;,&amp;nbsp;u&amp;amp;,&amp;nbsp;u2&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l&amp;nbsp;=&amp;nbsp;LBound(ar)&amp;nbsp;+&amp;nbsp;h:&amp;nbsp;u&amp;nbsp;=&amp;nbsp;UBound(ar)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;l2&amp;nbsp;=&amp;nbsp;LBound(ar,&amp;nbsp;2):&amp;nbsp;u2&amp;nbsp;=&amp;nbsp;UBound(ar,&amp;nbsp;2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;br&amp;nbsp;=&amp;nbsp;ar
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i&amp;nbsp;=&amp;nbsp;l&amp;nbsp;To&amp;nbsp;u
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i2&amp;nbsp;=&amp;nbsp;nr(i)&amp;nbsp;&amp;#39;引用原数组对应Index值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;j2&amp;nbsp;=&amp;nbsp;l2&amp;nbsp;To&amp;nbsp;u2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;br(i,&amp;nbsp;j2)&amp;nbsp;=&amp;nbsp;ar(i2,&amp;nbsp;j2)&amp;nbsp;&amp;#39;按排序结果引用原数组对应值返回
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;szbr&amp;nbsp;=&amp;nbsp;br
End&amp;nbsp;Function&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 10 Jun 2024 15:18:51 +0800</pubDate></item><item><title>vba删除多级目录及其目录下文件的自定义函数</title><link>http://zawen.net/post/84.html</link><description>&lt;p&gt;删除多级目录：如 &lt;strong&gt;call rmdirs(&amp;quot;D:\test&amp;quot;)&lt;/strong&gt; 将删除此test目录下所有目录和文件。&lt;/p&gt;&lt;pre class=&quot;brush:cpp;toolbar:false&quot;&gt;Function&amp;nbsp;RMDirs(Str&amp;nbsp;As&amp;nbsp;String)&amp;nbsp;As&amp;nbsp;Boolean
Rem&amp;nbsp;RMdir的升级版本，根据目录地址删除最后文件夹及里面的文件
Rem&amp;nbsp;使用方法Call&amp;nbsp;RMDirs(&amp;quot;D:\test\test2\test3&amp;quot;)
Rem&amp;nbsp;if&amp;nbsp;RMDirs(&amp;quot;D:\test\test2\test3&amp;quot;)=True&amp;nbsp;then&amp;nbsp;doSomething&amp;nbsp;&amp;nbsp;else&amp;nbsp;doOtherSomething
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Err.Clear
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On&amp;nbsp;Error&amp;nbsp;GoTo&amp;nbsp;ele
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;fs,&amp;nbsp;f
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Len(Str)&amp;nbsp;=&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Function
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;f&amp;nbsp;=&amp;nbsp;fs.GetFolder(Str)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.Delete
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RMDirs&amp;nbsp;=&amp;nbsp;True&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;删除多级目录成功
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;f&amp;nbsp;=&amp;nbsp;Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit&amp;nbsp;Function
ele:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RMDirs&amp;nbsp;=&amp;nbsp;False&amp;nbsp;&amp;nbsp;&amp;#39;删除多级目录失败
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set&amp;nbsp;f&amp;nbsp;=&amp;nbsp;Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;MsgBox&amp;nbsp;Err.number&amp;nbsp;&amp;amp;&amp;nbsp;Err.Description
End&amp;nbsp;Function&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 10 Jun 2024 15:15:40 +0800</pubDate></item><item><title>VBA自动创建多级目录</title><link>http://zawen.net/post/83.html</link><description>&lt;p&gt;VBA本身的mkdir是不能直接创建多级目录的，必须一级一级的创建目录。&lt;/p&gt;&lt;p&gt;比如：&lt;strong&gt;D:\test\test1&lt;/strong&gt;如果test目录不存在，直接&lt;strong&gt; mkdir &amp;quot;D:\test\test2&amp;quot; &lt;/strong&gt;将会出错。&lt;/p&gt;&lt;p&gt;下面是一个循环判断自动创建多级目录的代码：&lt;/p&gt;&lt;pre class=&quot;brush:vb;toolbar:false&quot;&gt;Function&amp;nbsp;MKDirs(Str&amp;nbsp;As&amp;nbsp;String)&amp;nbsp;As&amp;nbsp;Boolean
Rem&amp;nbsp;mkdir的升级版本，根据目录地址创建文件夹
Rem&amp;nbsp;使用方法Call&amp;nbsp;MKDirs(&amp;quot;D:\test\test2\test3\&amp;quot;)
Rem&amp;nbsp;if&amp;nbsp;MKDirs(&amp;quot;D:\test\test2\test3\&amp;quot;)=True&amp;nbsp;then&amp;nbsp;doSomething&amp;nbsp;&amp;nbsp;else&amp;nbsp;doOtherSomething
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;On&amp;nbsp;Error&amp;nbsp;Resume&amp;nbsp;Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;arr,&amp;nbsp;i%,&amp;nbsp;newStr$
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Len(Str)&amp;nbsp;=&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;Exit&amp;nbsp;Function
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;InStr(1,&amp;nbsp;Str,&amp;nbsp;&amp;quot;\&amp;quot;)&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr&amp;nbsp;=&amp;nbsp;Split(Str,&amp;nbsp;&amp;quot;\&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0&amp;nbsp;To&amp;nbsp;UBound(arr)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Len(arr(i))&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newStr&amp;nbsp;=&amp;nbsp;newStr&amp;nbsp;&amp;amp;&amp;nbsp;arr(i)&amp;nbsp;&amp;amp;&amp;nbsp;&amp;quot;\&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Dir(newStr,&amp;nbsp;vbDirectory)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;quot;&amp;nbsp;Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MkDir&amp;nbsp;newStr
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Err.number&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;GoTo&amp;nbsp;ele
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next&amp;nbsp;i
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Dir(Str,&amp;nbsp;vbDirectory)&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;quot;&amp;nbsp;Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MkDir&amp;nbsp;Str
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;Err.number&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;GoTo&amp;nbsp;ele
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MKDirs&amp;nbsp;=&amp;nbsp;True&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;创建多级目录成功
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exit&amp;nbsp;Function
ele:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MKDirs&amp;nbsp;=&amp;nbsp;False&amp;nbsp;&amp;nbsp;&amp;#39;创建多级目录失败
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;MsgBox&amp;nbsp;Err.number&amp;nbsp;&amp;amp;&amp;nbsp;Err.Description
End&amp;nbsp;Function&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 20 May 2024 18:30:12 +0800</pubDate></item><item><title>MCal工程通用计算式算量表V1.3.2.20 2024.5.20</title><link>http://zawen.net/post/82.html</link><description>&lt;p&gt;&lt;span style=&quot;overflow-wrap: break-word; font-weight: 700; color: #444444; background-color: #FFFFFF;&quot;&gt;MCal工程通用计算式算量表V1.3.2.20&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;2024.5.20&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;1、修复在 只有一行数据情况下，次级计算无法批量计算&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;2、修复更新页脚在有页脚的情况下无法更新&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;3、增加汇总计算会记住最后一次星级计算&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;4、更改汇总的快捷方式Ctrl+`,这样和Ctrl+1等对应起来&lt;/span&gt;&lt;br style=&quot;overflow-wrap: break-word; color: rgb(68, 68, 68); white-space: normal; background-color: rgb(255, 255, 255);&quot;/&gt;&lt;span style=&quot;color: #444444; background-color: #FFFFFF;&quot;&gt;5、取消在结果列点击出结果的计算方式&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/05/202405141715680530818985.png&quot; alt=&quot;收缩后的菜单.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Mon, 20 May 2024 10:57:25 +0800</pubDate></item><item><title>MCal工程通用计算式算量表V1.3.2.10  2024.5.14</title><link>http://zawen.net/post/81.html</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;MCal工程通用计算式算量表V1.3.2.10&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;2024.5.14&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;1、更新下tab菜单,菜单收缩后的效果如下&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/05/202405141715680530818985.png&quot; alt=&quot;收缩后的菜单.png&quot; style=&quot;width: 645px; height: 476px;&quot; width=&quot;645&quot; height=&quot;476&quot; border=&quot;0&quot; vspace=&quot;0&quot;/&gt;&lt;/p&gt;&lt;p&gt;全菜单：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/05/202405141715680530779126.png&quot; alt=&quot;新菜单.png&quot; style=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2、新增加次级计算数量为20个&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/05/202405141715680530384173.png&quot; alt=&quot;20个次计算.png&quot; style=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3、增加结果处理&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/05/202405141715680530414738.png&quot; alt=&quot;新增加.png&quot; style=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 14 May 2024 17:54:23 +0800</pubDate></item><item><title>西方伪史：汤若望历法作假来龙去脉</title><link>http://zawen.net/post/80.html</link><description>&lt;blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;作者：东哥说文史&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;img src=&quot;http://zawen.net/zb_users/upload/2024/04/202404141713090004241395.jpg&quot; alt=&quot;虚构的西方文明史&quot; width=&quot;1080&quot; height=&quot;1103&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 1080px; height: 1103px;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;很久没有分享西方伪史的故事了，可是看了这段视频，忍不住要做一期超长的节目，质疑一下从历年不是我们中国人发明的。&lt;/p&gt;&lt;blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;下面引用网络某博主的厥词：&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;农历年，是德国人倘若望花了15年时间，从海南岛到鹤岗，他每一年按到200多公里的速度北上算这个阳光直射地方的这个时间，所以你看到没有，哪有阳历年哪有24个节气跟这个阳历靠着这么近的呢，最多相差一两天。你看看清明节，你以为是我们祖宗留下的东西？我们祖宗留那么多下来，这么准确的东西，我就服了。我们这祖宗嘛，都是扯淡的。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;网络名人推崇的汤若望是明朝来到中国的外国人。崇祯二年，徐光启受命重修历法。徐光启邀请德国人汤若望修订立法，搞出来的叫《&lt;strong&gt;崇祯历书&lt;/strong&gt;》。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;水平怎么样呢？代表中国传统历法的中国天文学家和代表新历法的汤若望小组做了一次天文学预测竞赛。预测，日食，月食，水星和木星的运动，一共比赛了8次，哪家预测的准，就用哪家的立法。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;那么谁赢了呢？按照明史里面的记载，8次比赛外国人汤若望都赢了，8:0大胜中国队。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;这里面隐藏着一个天大的秘密。明朝历史是清朝人写的，依据是什么呢？依据是汤若望版本的说法，原来《&lt;strong&gt;崇祯历书&lt;/strong&gt;》做好之后还没有颁布，崇祯皇帝就上吊死了。明朝灭亡了，满清入关，不信任汉人，就让汤若望这一批外国人掌管国家天文历法。汤若望就把137卷的《&lt;strong&gt;崇祯历书&lt;/strong&gt;》删改为103卷，明目张胆地改名字叫“西洋新法历书”，颁布施行。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;在《崇祯历书》面还有两篇重要文献，一个叫《古今交食考》，一个叫《治历缘起》，一个记载了日食月食的记录，一个介绍了这一次修改立法的经过，尤其是这一篇《治历缘起》，原文件12卷对被汤若望删减成8卷，德国人汤若望到底删掉了什么呢？以前一直没有人知道，直到十几年前，中科院自然科学史研究所&lt;strong&gt;李亮&lt;/strong&gt;，中国科技大学&lt;strong&gt;吕林峰&lt;/strong&gt;和&lt;strong&gt;石云里&lt;/strong&gt;三位学者联合发表了一篇重磅论文《&lt;strong&gt;被遗漏的交食，传教士对崇祯改历时期，交食记录的选择性删除&lt;/strong&gt;》。原来今天一般人看到的崇祯历书，是被汤若望动过手脚的。原始版本的《崇祯历书》在韩国有一套奎章阁收藏的明朝刻本。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;中国学者对照明清两个版本的《崇祯历书》，发现&lt;em&gt;汤若望竟然把天王预测竞赛和观测记录当中自己推算错误的记录，删除的一干二净，留下的全部是自己预测准确的记录&lt;/em&gt;，这样当然就是常胜将军了。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;中国传统立法就这样被泼了400年脏水，直到今天，还有人拿这件事情颠倒黑白，嘲笑中国古代的天文历法。&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;这篇揭露德国人汤若望天文学造假的论文在两个公开场合做个报告，一个是2011年7月在安徽合肥召开的第十三届国际东亚科学技术与医学史会议；一次是2013年7月，在英国曼彻斯特召开的第24届国际科学史大会。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;欧洲人不但会给自己的古代历史造假，来到中国之后一样不老实啊。我有8天没有质疑西方伪史了，因为自从我提到文化霸权主义和新殖民主义之后，后台不友好的留言多了起来，流量也受到了影响，好像是刺痛了某些人的神经。本来我想敬而远之，停止更新西史辩伪系列。现在想一想，不能一代一代被他们给骗下去，从我的视频的遭遇就能够折射出西史辩伪研究的困难性，所以呢我要大张旗鼓的推荐这一批学者的著作，他们是《&lt;strong&gt;光从中华来，言不必称希腊&lt;/strong&gt;》、《&lt;strong&gt;虚构的西方文明史&lt;/strong&gt;》，&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;《&lt;strong&gt;虚构的古希腊文明&lt;/strong&gt;》，《&lt;strong&gt;欧洲文明史察疑&lt;/strong&gt;》。再早一点的还有&lt;strong&gt;何新&lt;/strong&gt;老师的《&lt;strong&gt;希腊伪史考&lt;/strong&gt;》和《&lt;strong&gt;希腊伪史续考&lt;/strong&gt;》给大家展示一下，可惜了，这两个版本现在已经是绝版了，这几本书在我的视频下方和我的橱窗里都有，大家可以购买这些学者的著作，支持他们继续研究。大家一起把颠倒的历史颠倒过来，感谢支持，&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;不见不散，朋友们。&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;作者发表的抖音视频：&lt;/p&gt;&lt;blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;5.35 复制打开抖音，看看【东哥说文史的作品】中国古代天文历法是怎样被抹黑的？# 历史 # 好书... https://v.douyin.com/iYHshP3d/ B@T.lP 12/12 Btr:/&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;</description><pubDate>Sun, 14 Apr 2024 17:44:05 +0800</pubDate></item></channel></rss>