VFP控制Excel排序

defox iv 免费的VFP加密程序(亲测可用,老外版本) defox iv 免费的VFP加密程序 亲测可用,老外版本,如果运行时出现“找不到排序序列'pinyin'”,时,直接忽略即可。 因为老外版本,加密后不容易被解密破解。 立即下载

 

很多朋友在试图用VFP控制Excel都有过无从着手困惑,不知道该去调用哪些过程、方法、函数。

其实进入Excel后,如果我们按Alt-F11,打开Excel自带的Visual Basic编辑器,然后按F2,在对象浏览器里,可以找到许多有用资源。如下图。 

接下来就好办了,不停地与帮助文件对照,查找属性、方法的详细说明。

题外话,我总觉得微软编程序不够厚道,类、类的属性、类的实例经常使用同一个名字,例如类Range、Sheets、WorkBooks,都与类Application的一个属性同名,而且这些属性又恰好都是这些同名类,把我搞得晕晕糊糊,熟了之后才反应过来,哦,原来是不同的东西。有人夸这是C++灵活性的体现,我是不太喜欢这种编码方法,也许高手能挥洒自如吧。

打住,回头看看Excel里与排序有关的类、方法和函数。

Range类里有这么两个方法Sort 和 SortSpecial,从字面上看估计和排序有关,进入帮助看看。

  1. 关于Sort,它第一句话是这么说的:“对数据透视表、单元格区域或活动区域(如果指定区域仅包含一个单元格)进行排序”。
    看样子找对了。接下来是调用说明:

    expression.Sort(Key1,Order1,Key2,Type,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Orientation,SortMethod,DataOption1,DataOption2,DataOption3)

    用无特定指向的expression来表示Sort的宿主,说明许多类会拥有这一属性,不单是Range类。
    各参数说明还是比较容易理解的,不逐一分析,说说重点。
      • 参数Key1,第一个排序字段。Variant 类型,不定类型参数,可以接受任何类型的参数,行、列、单元格自然不例外,因为它们肯定有归属类型。在Excle中,行、列、单元格本身不是类型,但都是Range类型的一个对象,所以归属Range类型。所以当把一个行或一个列作为参数传递给Sort时,实际上是被作为Range类传递的。
      • Excle有很多预定义枚举类型,例如XLSortOrder、XlYesNoGuess、XlSortOrientation,还有很多预定义常量,例如xlDescending、xlAscending。我还没有找到在VFP里直接使用类型和常量的方法,现在只好在帮助文件查出数字,直接用数字作参数。等以后找到办法了再来补充调整这篇博客。
      • OrderCustom,Variant 类型。这个参数很有作用,用来指明排序方式,是我这篇东西的核心,帮助文件里说明不够详细,要参考一下MSDN。
      许多情况下我们并不希望按系统默认的方式排序,通过OrderCustom就可以指定其它排序方式。Excel以数值1代表系统默认排序方式,其它排序方式的代表值,是在1的基础上加上自定义排序方式在Excel自定义序列表中的序位合成。
      等一会儿再举例说明。

  2. 找到在指定排序方式,接下来就会想到怎么添加自定义序列。这个在Application的定义里,有这么几个方法属性:
    1. Sub AddCustomList( ListArray, [ByRow] ),增加一个自定义序列。按照帮助文件里的说法,ListArray也是一个不定类型参数,可以是一个数组,也可以是一个Range类。
    2. Sub DeleteCustomList( ListNum As Long ),删除自定义序列表中、序号是ListNum的序列。Excel退出时不会自动删除自定义序列,为了避免干扰其它程序,我们主动打扫战场。
    3. Function GetCustomListNum( ListArray ) As Long,返回字符串数组在自定义序列列表中的序号。这里的ListArray只能是字符串数组。

现在估计齐了,可以动手排序了。
设想我们要解决这样一个问题,对序列1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月排序,VFP达不到我们预期的效果,它会把10月、11月、12月排在1月的前面,按文字排,而不是按数字排。
因此我们用自定义序列解决。

eole = Createobject( 'excel.application' )                                          &&建立Excel对象。

dimension arrMonthlyOrderList[ 12 ]                                           &&准备自定义的序列。
FOR i = 1 TO 12
           arrMonthlyOrderList[ i ] = ALLTRIM( STR( i )) + '月'           &&生成自定义序列。
ENDFOR

eole.AddCustomList( @arrMonthlyOrderList, )       &&把自定义序列加入Excel自定义月度序列表。
**  自定义序列在定义之前可能就已经存在,所以加入之前最好校验一下,以免打扫战场的时候清除多了。
**  但帮助文件里说如果对应序列不存在,getCustomListNum将出错,却又没有说出什么错。
**  MSDN里没查到对应序列不能存在时getCustomListNum会有什么反应。
**  自己测试出来的getCustomListNum反应也不见得靠得住。
**  所以干脆省略了这一环。大家根据自己的情况酌情处理吧。


** 要求按自定义序列排序时,需指定排序方式。
** Excel以数值1代表系统默认排序方式。
** 其它排序方式的代码值,是在1的基础上加上自定义序列在Excel自定义序列表中的序位合成。
** 自定义序列在定义之前可能已经存在,所以不能肯定加在了最后,一定要从自定义序列表中提取序位。
nListNum  = eole.getCustomListNum( @arrMonthlyOrderList )  + 1   

ebook = eole.workbooks.Open( 'D:\Documents\myExcel.xls' )
loxlSheet =eole.activesheet

loxlSheet.Range( "c1:n137"  ).;
    Sort( loxlSheet.Range( "c1:n1" ),1,;          &&按升序排列。
   ,,,,,2,;                                                                &&无标题。
   nListNum,;                                                     &&按自定义序列排序。
   ,2,;                                                                    &&对行排序。
   ,,,)

loxlSheet.columns.AutoFit                             &&按列自动填充。


***  清除自定义序列。
***  清除过程中剩余序列在自定义序列表中的序位可能发生变化,所以必须重新提取序号。
eole.deleteCustomList( eole.getCustomListNum( @arrMonthlyOrderList ) )


ebook.Save
ebook.Close

eole.Quit
Release eole

 以上代码在VFP + Excel2003环境下调试通过,大功告成。

(行文如有暇错,欢迎指正!)

VFP全面控制EXCEL VFP全面控制EXCEL,VF到Excel的转换 立即下载

相关推荐

VFP全面控制EXCEL收藏

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作

VFP常用命令、函数、属性、事件和方法

应用于ActiveDoc对象,复选框,列,组合框,命令按钮,命令组,容器对象,控件对象,临时表,自定义,数据环境,文件对象,编辑框,表单,表单集,表格,标头,图象,标签,线条,列表框,OLE绑定型控件,OLE容器控件,选项按钮,选项组,页面,页框,项目对象,ProjectHook对象,关系,_SCREEN,形状,微调,文本框,计时器,工具栏。应用于复选框,列,组合框,命令组,容器对象,控件对象,编辑框,表单,表格,标头,标签,选项按钮,选项组,页面,屏幕,形状,微调,文本框,工具栏。指定显示文本的字体名。

qq_38220914的博客 8616

Foxpro中如何实现对EXCEL表格的操作

Foxpro中如何实现对EXCEL表格的操作

c语言选择排序

首先选择排序是什么?     选择排序是讲一组数据从小到大进行排序,它在待排序区间中经过选择和交换后选出最小的数值存放到 a[0] 中,再从剩余的未排序区间中经过选择和交换后选出最小的数值存放到 a[1] 中,a[1] 中的数字仅大于 a[0],以此类推。 那选择排序如何实现呢? #include <stdio.h> int main() { int a[10],i,j,t; printf("请输入10个数:\n"); for(i=

wuxin 418

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单)

本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。

weixin_28481133的博客 1265

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。

Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。

qq_48050838的博客 1万+

c++排序函数对二维数组排序_动态数组函数系列3| 排序函数SORT,一次排序,动态更新...

在早前的版本中,如果我们需要对数据进行排序,常规的做法就是直接源数据中进行升降序排序。而SORT函数可以引用数据区域并将排序结果返回到指定单元格区域中。SORT语法SORT函数的第一参数是必选参数,其它都是可选参数。如果忽略后面的所有可选参数,那么[sort_index]会默认为1,也就是以第一列或第一行作为排序依据;[sort_order]会默认为“升序排列”;[by_col]会默认“按行排列”...

weixin_39603117的博客 402

使用同一个时钟源clki,做两个二分频时钟,得到div2_clk1和div2_clk2,这两个时钟都能跟源时钟clki同步,但是div2_clk1和div2_clk2的相位可能是相同的,也可能是反相

比如,触发器1的初始Q为0,而触发器2的初始Q为1(这可能由于芯片制造工艺的微小差异、上电过程的随机性、或没有全局复位信号导致)。这句话的意思是:虽然div2_clk1和div2_clk2都是由同一个妈妈(clki)生出来的,频率也都是妈妈的一半,但它们“起步”的时刻可能不同。所以,上面那段话是在提醒你注意这种潜在的、由分频产生的时钟相位关系的不确定性,这在异步电路设计或时钟管理中是必须考虑的关键因素。结果:div2_clk1和div2_clk2的波形完全重合,它们的上升沿和下降沿都发生在同一时刻。

m0_49540263的博客 592

安卓期末作品简单_小学语文期末考试总攻略,有它就够了!

小编说:期末考试即将到来,孩子们都在紧张的备考当中。那么,如何在语文考试中取得好成绩呢? 今天小编为大家整理了一些考试技巧分享给大家,希望对孩子的期末考试有所帮助!要有一手不见得漂亮但要工整的字语文老师:我喜欢字写得工整的试卷,这不是废话。很多其他学科的老师,都在异口同声地说,字写得工整的卷子就是让人看了舒服。我参加了多年的语文阅卷,而且一直承担作文评分任务。对于考生的书写,我确实有...

weixin_39675926的博客 266

从0到1:OpenClaw 助力单元测试代码自动化与覆盖率飞升

OpenClaw 的横空出世,宛如一道曙光,照亮了这片黑暗的领域。它作为一款强大的本地 AI 助手,拥有着令人惊叹的能力。OpenClaw 能够深入理解代码的逻辑结构,自动分析代码中的各种功能和潜在的风险点,从而精准地生成高质量的单元测试代码。它就像是一位不知疲倦的测试专家,能够快速、准确地完成那些繁琐的测试编写工作,将开发者从重复劳动中解放出来,让他们能够将更多的精力投入到更具创造性和价值的工作中。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 477

gem5-gpu教程01 部署(实测可跑通)

这将GPGPU-Sim更新为与gem5-gpu兼容的最新版本。此版本是已知可用于gem5 gpu的最新版本。

qq_20388971的博客 1405

vfp操作excel排序_Excel中如何按职位高低排序?神操作!

在Excel表格中,可以按数字大小、文字编码和颜色排序,你听说过按职位高低排序吗?如下图的员工信息表中,要求根据B列的职位类别,按总经理、副总经理、总监、经理、职员职位大小排序。想实现其实很简单,只需要自定义序列,然后根据序列排序即可。操作步骤:1、选取左边表格,数据 - 排序打开【排序】窗口。在窗口关键字选取职位类别列,次序选 自定义序列。2、在打开的【自定义序列】窗口中,按职位大小顺序输入职位...

weixin_39859954的博客 329

Unity DOTS核心概念之 System(系统)

本文全面解析Unity ECS架构中System的核心概念与最佳实践。System作为纯逻辑载体,遵循"查询数据→处理数据"的工作流,严格分离数据与逻辑。文章详细介绍了: System定义方式(推荐ISystem接口)与三大设计准则(纯逻辑、无状态、最小权限) 生命周期管理(OnCreate/OnUpdate/OnDestroy)和执行顺序控制(UpdateInGroup/UpdateBefore) 实体查询机制(SystemAPI.Query高级筛选)和多线程优化(IJobEntity

分享知识,拥抱变化 184

vfp控制excel排序_它是Excel表格中最帅的功能,没有之一

对于Excel中的切片器,小编不知道用什么形容词它。好看?的确好看!它会让界面变成十分美观。实用?有了它就可以用点按钮动作快速筛选表格。操作太舒服了!想了好久,还是这个字了:帅!在Excel表格中能集美貌和才华于一身的功能,也只有它了。还有一个最关键之处:制作特简单下面小编就系统讲解一下这个帅到爆的Excel工具。一、应用场景切片器是Excel2010版才开始添加的功能,并且只能在以下两种情形下使...

weixin_39524147的博客 226

SI案例分享--FPC(柔性电路板)信号仿真

设计高性能的柔性PCB时,由于采用了网格地的参考面构造,因此,需要按照特定的结构进行布局,才可以保证所需目标阻抗的稳定性,该结构的配置过程称为“Hatch Configuration”,合理的参数配置将有助于得到满意的设计效果。

一只豌豆象的博客 2831

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 908

vfp控制excel使用sort_干货技巧 | 在Excel中巧妙实现排序操作

在日常办公中,用户经常会进行排序操作,微软Excel提供了相应的功能按钮,但这种排序方法并不利于数据的频繁更新,但对初级办公用户来说,撰写公式进行排序,难度确实太大了一些。其实,如果你已经加入Office预览计划,那么可以借助排序函数SORT实现排序操作。SORT函数可以对数据进行排序,公式语法如下:=SORT(数据源,[排序列/行],[升序/降序],[按行/列排序])。如图1所示的数据,现在要求...

weixin_39966225的博客 490

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

vfp控制excel排序_5.EXCEL数据透视表超超超全总结(上)

一、 什么是数据透视表:数据透视表和筛选、排序一样,都是EXCEL中的数据处理的工具。数据透视表可以从数据源中提炼自己想要的各种统计数据,以各种报表形式展示数据,比排序、筛选更为灵活、强大。二、 创建数据透视表及字段设置>>区别计算字段和计算项:计算字段是字段间的计算(即左侧字段间的公式计算)计算项是字段下条目间的计算(即右侧计算项的公式计算)三、 数据透视表的常规操作下面的链接是一个...

weixin_39614094的博客 316

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

vfp控制excel排序_Excel基本单元格格式,需要注意的那点事

Excel中,有12种设置单元格格式的选项,我们可以根据实际需求,对单元格格式做相应的设定,以达到更便捷的输入和更清晰的显示效果。用Ctrl + 1打开设置单元格格式选项卡,可以看到下面的设置页面。Excel官方帮助文档里,对这些格式做了明确的解释和说明常规键入数字时 Excel 所应用的默认数字格式。 多数情况下,设置为“常规”格式的数字即以键入的方式显示。 然而,如果单元格的宽度不够显示整个数...

weixin_39597318的博客 653

vfp控制excel使用sort_干货技巧 | 在Excel中巧妙实现排序操作

在日常办公中,用户经常会进行排序操作,微软Excel提供了相应的功能按钮,但这种排序方法并不利于数据的频繁更新,但对初级办公用户来说,撰写公式进行排序,难度确实太大了一些。其实,如果你已经加入Office预览计划,那么可以借助排序函数SORT实现排序操作。SORT函数可以对数据进行排序,公式语法如下:=SORT(数据源,[排序列/行],[升序/降序],[按行/列排序])。如图1所示的数据...

weixin_39630637的博客 516

vfp控制excel使用sort_动态数组函数系列3| 排序函数SORT,一次排序,动态更新

在早前的版本中,如果我们需要对数据进行排序,常规的做法就是直接源数据中进行升降序排序。而SORT函数可以引用数据区域并将排序结果返回到指定单元格区域中。SORT语法SORT函数的第一参数是必选参数,其它都是可选参数。如果忽略后面的所有可选参数,那么[sort_index]会默认为1,也就是以第一列或第一行作为排序依据;[sort_order]会默认为“升序排列”;[by_col]会默认“...

weixin_39830387的博客 800

vfp操作excel排序_使用vlookup轻松搞定条件排序,再也不用一个一个的调整了

我们在对数据进行排序的时候只有两种规则,要么升序要么降序,排序之后excel会根据自己默认的规则将数据排列在一起,但是往往很多时候这种默认的排列顺序不是我们想要的,比如在这里我们想要对部门进行排序,并且希望数据是按照:总经办,人事部,行政部,财务部,市场部,销售部这样的顺序进行排列的,如果我们直接按照部门升序或者降序都无法达到要求,如下图这个时候我们就需要手动调整数据的位置,排序就失去了意义,今天...

weixin_39908263的博客 708

vfp控制excel使用sort_使用Python根据索引合并Excel表

有两张不同大小的excel表表1:字典的选项值,2118行表2:字典名称,405行表1和表2有共同的列.现在需要根据共同的列,以表1为底,将表2的值对应添加到表1的每一行。下面是代码:1.加载相关的库import numpy as np import pandas as pd from pandas import Series,DataFrame2.导入两张表path_key = 'E:dict_...

weixin_39756273的博客 240

VFP输出EXCEL报表分组的一个示例

用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。字段itmclass为产品的生产线分类,作为数据分组的大类,字段majcod作品产品的组别,为数据分组的。微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。

加菲猫的VFP 52

vfp控制excel使用sort_Python教学案例|匹配两个excel文件

Python教学案例|读写excel文件Python教学案例|合并多个excel文件windows下安装openpyxl 3.0.0 版本:win + r #打开运行cmd #进入黑黑的窗口pip install openpyxl==3.0.0 -i https://pypi.douban.com/simple #用pip安装,搞定01准备好表格及数据生活中经常会碰到两个ex...

weixin_39630441的博客 314
上一篇: VFP创建Excel新办法
下一篇: 分组排序
不假思索
博客等级 码龄23年 10粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值