![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 06:17 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求一个对比Excel文件的批处理bat vbs随便什么都行 |
| 可打印版本 2,930 / 15 |
| 第1楼 loquat | 发表于 2010-03-30 12:36 |
| 初级用户 发帖 80 积分 81 | |
|
求一个对比Excel文件的批处理bat vbs随便什么都行 两个xls文件的前两列完全一致。只有第三列不同。并且第三列所有行只有6种内容。
要求将a.xls和b.xls的内容作对比,一行为一项,统计出变化的项的数量,并导出内容到txt或者xls也行。 内容格式例如下: a.xls A B C 000001 发展A 保留意见 000002 进步B -- 000003 流*动C 带强调事项段的无保留意见 b.xls A B C 000001 发展A -- 000002 进步B 保留意见 000003 流*动C 带强调事项段的无保留意见 要求最后的结果是: c.txt A B C D 000001 发展A 保留意见 -- 000002 进步B -- 保留意见 C行的6种内容如下: “标准无保留意见”可记为0;“带强调事项段的无保留意见”可记为1;“无法表示意见”可记为2;“保留意见”可记为3;“否定意见”可记为4;“未披露审计意见类型”可记为5;“--”可记为6 不知道这个难不难,好像从来没见过这种批处理。。。 大侠们帮帮忙,说说可以怎么实现,只要可以实现不管怎么弄都行。 |
|
| 第2楼 Hanyeguxing | 发表于 2010-03-30 12:56 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
Excel中使用统计函数就可以直接实现
|
|
| 第3楼 loquat | 发表于 2010-03-30 13:05 |
| 初级用户 发帖 80 积分 81 | |
|
谢谢兄弟,那我先去学学这个怎么用。。。
[ Last edited by loquat on 2010-3-30 at 13:06 ] |
|
| 第4楼 qinchun36 | 发表于 2010-03-30 14:04 |
| 高级用户 发帖 400 积分 609 | |
|
[ Last edited by qinchun36 on 2010-3-30 at 16:17 ] |
|
| 第5楼 loquat | 发表于 2010-03-30 14:50 |
| 初级用户 发帖 80 积分 81 | |
Originally posted by qinchun36 at 2010-3-30 14:04: .... 感谢大侠出手帮助! 还能不能对得出的txt文件再分别按C列和D列做排序处理? 按0->6的顺序,谢谢。 还是这边气氛好,我在verybat那边发的帖都没人理睬我!不过也怪我自己太菜了。就知道成天收藏别人的批处理,从来没自己尝试写过。。。 现在的文件已经成了这样。。。
[ Last edited by loquat on 2010-3-30 at 15:29 ] 附件 2000-2001.rar (40.73 KiB) |
|
| 第6楼 qinchun36 | 发表于 2010-03-30 16:09 |
| 高级用户 发帖 400 积分 609 | |
|
上面的代码没有注意数有多少条改变了,已经重新修改了一个小地方。
排序excel里面就有的,这个结果里面的文本是用 Tab 分隔的, 全选复制文本,新建一个excel表,直接CTRL+V粘贴到里面就可以。 然后点“排序和筛选”的“自定义排序”,在这个界面就可以操作了,还可以添加排序条件。 [ Last edited by qinchun36 on 2010-3-30 at 16:16 ] 附件 excel_sort.GIF (17.75 KiB) |
|
| 第7楼 loquat | 发表于 2010-03-30 17:02 |
| 初级用户 发帖 80 积分 81 | |
Originally posted by qinchun36 at 2010-3-30 16:09: 但是用Excel按C排序后好像ABD行没有对应变换顺序哦? |
|
| 第8楼 qinchun36 | 发表于 2010-03-30 17:25 |
| 高级用户 发帖 400 积分 609 | |
|
.....
excel 基本操作啊,不要去点哪一列,全选之后再排序 |
|
| 第9楼 loquat | 发表于 2010-03-30 17:33 |
| 初级用户 发帖 80 积分 81 | |
|
囧,我以为我电脑算是入门了,没想到还是这么菜啊。
看来水还是很深,继续加油。。。 |
|
| 第10楼 loquat | 发表于 2010-03-30 17:36 |
| 初级用户 发帖 80 积分 81 | |
|
大侠还能顺手给个没有变化的项目列表不?
|
|
| 第11楼 Hanyeguxing | 发表于 2010-03-30 17:48 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
将两个xls文件用excel 打开,复制有效内容到2000.txt和2001.txt中。 注意,批脚本中出现的连续空格实际是一个制表符。 if not "!%%d%%e!"=="%%f" (set/a n+=1 中去掉not得到的就是相同内容的列表 [ Last edited by Hanyeguxing on 2010-3-30 at 17:51 ] |
|
| 第12楼 Hanyeguxing | 发表于 2010-03-30 18:02 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
如果不需要替换,那么只用
就可以生成。 如果要得到相同部分且需要替换代码则: 如果同时需要按代码陪列顺序,则可以: 注意,批脚本中出现的连续空格实际是一个制表符。 [ Last edited by Hanyeguxing on 2010-3-30 at 18:18 ] |
|
| 第13楼 loquat | 发表于 2010-03-30 18:21 |
| 初级用户 发帖 80 积分 81 | |
|
风舞九天果然神人!感谢两位大力帮助,问题已经完美解决,我帮的那位MM很高兴。。。
嘿嘿。。。 |
|
| 第14楼 qinchun36 | 发表于 2010-03-30 18:34 |
| 高级用户 发帖 400 积分 609 | |
|
有一行是 If a(i, 3) <> b(i, 3) Then
改成 If a(i, 3) = b(i, 3) Then 就是相同的了 |
|
| 第15楼 loquat | 发表于 2010-03-30 22:26 |
| 初级用户 发帖 80 积分 81 | |
|
为了帮助小弟泡MM,两位大侠可能还要再关注下此贴。同样的数据她还要得出其他的比较结果。
先感谢两位。。。 [ Last edited by loquat on 2010-3-30 at 22:30 ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |