[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 liaoguinan 于 2024-10-23 20:19 编辑




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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

可以 ,相当于根据B列汇总了

TOP

  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

评分人数

TOP

发现以前理解错了,不用转格式也可以很快。
  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
复制代码

TOP

回复 3# idwma


    这个能实现下面那个代码就出错了

TOP

第10行漏了个下划线补上应该可以了
  1. 1..$i|%{$e[$d[$_,2]]+=,$d[$_,1]}
复制代码

TOP

返回列表