Board logo

标题: [文件操作] [已解决]求助批处理EXCEL数据修改 [打印本页]

作者: liaoguinan    时间: 2024-10-22 23:56     标题: [已解决]求助批处理EXCEL数据修改

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




有没有办法通过判断B列的数据以及A列的数据得出C列的数据
作者: Five66    时间: 2024-10-23 01:21

可以 ,相当于根据B列汇总了
作者: idwma    时间: 2024-10-23 13:26

  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的方式会快一点
作者: idwma    时间: 2024-10-23 15:27

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

作者: liaoguinan    时间: 2024-10-23 20:19

回复 3# idwma


    这个能实现下面那个代码就出错了
作者: idwma    时间: 2024-10-24 11:40

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





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2