找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11092|回复: 5

[文件操作] [已解决]求助批处理EXCEL数据修改

[复制链接]
发表于 2024-10-22 23:56:06 | 显示全部楼层 |阅读模式
本帖最后由 liaoguinan 于 2024-10-23 20:19 编辑




有没有办法通过判断B列的数据以及A列的数据得出C列的数据

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-10-23 01:21:33 | 显示全部楼层
可以 ,相当于根据B列汇总了
发表于 2024-10-23 13:26:25 | 显示全部楼层
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $fn='aaaaaa.xlsx'
  3. $a=new-object -com excel.application
  4. $a.visible=1
  5. $b=$a.workbooks.open("$(dir $fn)")
  6. $c=$b.sheets.item(1)
  7. $d=$c.usedrange
  8. $e=@{}
  9. for($i=4;$i -lt $d.count;$i+=3){
  10. $f=$d.cells.item($i)
  11. $e[$f.next.text]+=,$f.text
  12. }
  13. $i=3
  14. $e.keys|%{$d.cells.item(($i+=3)).value()="$_ "+($e[$_] -join '、')}
复制代码
如果内容太多用转csv的方式会快一点

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2024-10-23 15:27:01 | 显示全部楼层
发现以前理解错了,不用转格式也可以很快。
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $fn='aaaaaa.xlsx'
  3. $a=new-object -com excel.application
  4. $a.visible=1
  5. $b=$a.workbooks.open("$(dir $fn)")
  6. $c=$b.sheets.item(1)
  7. $d=$c.usedrange.cells.value()
  8. $i=$d.length/($d.rank+1)
  9. $e=@{}
  10. 1..$i|%{$e[$d[$_,2]]+=,$d[$,1]}
  11. $i=1
  12. $e.keys|%{$d[($i+=1),3]="$_ "+($e[$_] -join '、')}
  13. $c.usedrange.cells.value()=$d
复制代码
 楼主| 发表于 2024-10-23 20:19:27 | 显示全部楼层
回复 3# idwma


    这个能实现下面那个代码就出错了
发表于 2024-10-24 11:40:11 | 显示全部楼层
第10行漏了个下划线补上应该可以了
  1. 1..$i|%{$e[$d[$_,2]]+=,$d[$_,1]}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:40 , Processed in 0.022273 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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