
标题: [文本处理] 求助批处理把Excel首列相同内容合并到同一行 [打印本页]
作者: 司马光2008 时间: 2025-3-22 23:48 标题: 求助批处理把Excel首列相同内容合并到同一行
各位好,本人是贴片行业的牛马,想学习贴片的CAD坐标和BOM合并,需要把Excel首列相同内容合并到同一行中,帮忙看看什么合并。
样式如下:
BOM格式:
C31,C34 1049467-00-A CAP,COG,12pF,50V,5%,0402(1005),AEC-Q
R26 1113417-00-A RES,1K00,1/16W,1%,0402(1005),AEC-Q
R4,R7,R24 1113588-00-A RES,33K0,1/16W,1%,0402(1005),AEC-Q
J2 1061850-00-A CONN,HDR,RA,5P,5X1,2MM,SM,TIN
D2 1103738-00-A DIODE,SCHOTTKY,40V,0.4A,SOD-323
Q1 1516298-00-A XSTR,MOSFET,P-CH,30V,3.8A,SOT23-3,AEC-Q
CAD格式:
C31 12.1 6.5 0
C34 10.1 13.3 180
Q1 10.7711 7.825 90
J2 18.4948 10 270
D2 20.4 10 270
R26 12.3 5.3 0
R7 9 16.175 270
R7 5.3 13.8 180
R4 5.3 13.8 180
R24 5.3 13.8 180
合并后的样式:
C31 12.1 6.5 0 1049467-00-A CAP,COG,12pF,50V,5%,0402(1005),AEC-Q
C34 10.1 13.3 180 1049467-00-A CAP,COG,12pF,50V,5%,0402(1005),AEC-Q
Q1 10.7711 7.825 90 1516298-00-A XSTR,MOSFET,P-CH,30V,3.8A,SOT23-3,AEC-Q
J2 18.4948 10 270 1061850-00-A CONN,HDR,RA,5P,5X1,2MM,SM,TIN
D2 20.4 10 270 1103738-00-A DIODE,SCHOTTKY,40V,0.4A,SOD-323
R26 12.3 5.3 0 1113417-00-A RES,1K00,1/16W,1%,0402(1005),AEC-Q
R7 9 16.175 270 1113588-00-A RES,33K0,1/16W,1%,0402(1005),AEC-Q
R4 5.3 13.8 180 1113588-00-A RES,33K0,1/16W,1%,0402(1005),AEC-Q
R24 5.3 13.8 180 1113588-00-A RES,33K0,1/16W,1%,0402(1005),AEC-Q
作者: idwma 时间: 2025-3-23 01:10
本帖最后由 idwma 于 2025-3-23 01:13 编辑
大概的样子- #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
- $bom='bom.xlsx'
- $cad='cad.xlsx'
- $a=new-object -com excel.application
- $b=$a.workbooks.open("$(dir $bom)")
- $c=$b.sheets.item(1)
- $bd=$c.usedrange.cells.value()
- $bc=$bd.count/$c.usedrange.columns.count
- $b.close()
- $b=$a.workbooks.open("$(dir $cad)")
- $c=$b.sheets.item(1)
- $cd=$c.usedrange.cells.value()
- $cc=$cd.count/$c.usedrange.columns.count
- $b.close()
- $a.quit()
- $bl=@{}
- 1..$bc|%{
- $e=@($bd[$_,2],$bd[$_,3])
- $bd[$_,1] -split ','|%{$bl[$_]=$e}
- }
- 1..$cc|%{
- $e=$cd[$_,1]
- '"{0}","{1}","{2},"{3}","{4}","{5}"' -f (
- ($e,$cd[$_,2],$cd[$_,3],$cd[$_,4])+$bl[$e]
- )
- }|sc bomcad.csv
复制代码
作者: aloha20200628 时间: 2025-3-23 10:39
本帖最后由 aloha20200628 于 2025-3-23 10:42 编辑
回复 1# 司马光2008
假设已有bom.txt, cad.txt 文件,格式如一楼所示(删除 R7 重复行),全部零部件号数量不超过8000个
以下代码存为 test.bat 与 *.txt 文件同目录运行,输出结果文件名为 out.txt 其中零部件号顺序如 bom.txt...- @echo off &setlocal enabledelayedexpansion
- for /f "tokens=1* delims= " %%a in (cad.txt) do set "_#%%a=%%b"
- (for /f "tokens=1* delims= " %%a in (bom.txt) do for %%x in (%%a) do echo,%%x,!_#%%x!,%%b)>out.txt
- pause&exit/b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |