返回列表 发帖

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

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




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

评分人数

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

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

TOP

#@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
$fn='aaaaaa.xlsx'
$a=new-object -com excel.application
$a.visible=1
$b=$a.workbooks.open("$(dir $fn)")
$c=$b.sheets.item(1)
$d=$c.usedrange
$e=@{}
for($i=4;$i -lt $d.count;$i+=3){
$f=$d.cells.item($i)
$e[$f.next.text]+=,$f.text
}
$i=3
$e.keys|%{$d.cells.item(($i+=3)).value()="$_ "+($e[$_] -join '、')}COPY
如果内容太多用转csv的方式会快一点
1

评分人数

TOP

发现以前理解错了,不用转格式也可以很快。
#@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
$fn='aaaaaa.xlsx'
$a=new-object -com excel.application
$a.visible=1
$b=$a.workbooks.open("$(dir $fn)")
$c=$b.sheets.item(1)
$d=$c.usedrange.cells.value()
$i=$d.length/($d.rank+1)
$e=@{}
1..$i|%{$e[$d[$_,2]]+=,$d[$,1]}
$i=1
$e.keys|%{$d[($i+=1),3]="$_ "+($e[$_] -join '、')}
$c.usedrange.cells.value()=$dCOPY

TOP

回复 3# idwma


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

TOP

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

TOP

返回列表