标题: [文件操作] Excel文本处理 [打印本页]
作者: 司马光2008 时间: 2024-9-1 00:51 标题: Excel文本处理
各位大神们,请教一个问题,如何把两个Excel里面的内容合并到一起并输出一个新的Excel
内容描述:需要把 A 和 B 两个Excel里面的内容,参照 城市名 合并为 C Excel文件
A-Excel文件:
城市 团队 小队 分队 奖品
广州 团队1 小队3 分队1 饮料
南京 团队2 小队4 分队2 毛巾
武汉 团队3 小队5 分队3 洗发露
桂林 团队4 小队6 分队4 牙刷
苏州 团队5 小队7 分队5 饮料
深圳 团队8 小队9 分队1 饮料
徐州 团队5 小队7 分队5 饮料
B-Excel文件
省份 城市 描述
广东 广州,深圳 优秀团队
广西 桂林 最佳形象团队
江苏 南京,苏州,徐州 年度最佳团队
湖北 武汉 月度最佳团队
合并为 C-Excel文件
城市 团队 小队 分队 奖品 省份 描述
广州 团队1 小队3 分队1 饮料 广东 优秀团队
南京 团队2 小队4 分队2 毛巾 江苏 年度最佳团队
武汉 团队3 小队5 分队3 洗发露 湖北 月度最佳团队
桂林 团队4 小队6 分队4 牙刷 广西 最佳形象团队
苏州 团队5 小队7 分队5 饮料 江苏 年度最佳团队
深圳 团队8 小队9 分队1 饮料 广东 优秀团队
徐州 团队5 小队7 分队5 饮料 江苏 年度最佳团队
作者: 司马光2008 时间: 2024-9-1 00:54
老板要求每天都要手动合并这些东东很麻烦,我本人Excel知识不多,请各位大神帮帮忙
作者: 77七 时间: 2024-9-1 11:28
试试- @echo off
- rem 保存为ansi编码
- cd /d "%~dp0"
- for /f "useback tokens=1* delims=," %%a in ("b.csv") do (
- set _%%a=%%b
- )
- (
- echo 城市,团队,小队,分队,奖品,省份,描述
- for /f "useback skip=1 delims=" %%a in ("a.csv") do (
- for /f "delims=," %%b in ("%%a") do (
- (for /f "tokens=1* delims=_=" %%c in ('set _ ^|find "%%b"') do (
- for %%e in (%%d) do (
- set str=%%e
- )
- call echo %%a,%%c,%%str%%
- )) || echo %%a
- )
- )
- ) > "c.csv"
- pause
复制代码
作者: aloha20200628 时间: 2024-9-1 15:50
本帖最后由 aloha20200628 于 2024-9-1 15:56 编辑
回复 1# 司马光2008
以下代码假设一楼示例文件:
A-Excel文件 = a.txt
B-Excel文件 = b.txt
生成的合并结果:
C-Excel文件 = c.txt
- @echo off & (
- echo,城市 团队 小队 分队 奖品 省份 描述
- for /f "skip=1 tokens=1* delims= " %%a in (a.txt) do (
- for /f "tokens=1-3 delims= " %%x in ('findstr /ic:"%%a" b.txt') do echo,%%a %%b %%x %%z
- ))>c.txt
- pause&exit/b
复制代码
作者: ppll2030 时间: 2024-9-1 21:44
本帖最后由 ppll2030 于 2024-9-1 21:50 编辑
回复 1# 司马光2008
假设有A.xlsx,B.xlsx两个表格,
把下面的代码保存为VBS文件,和上面两个表格放在一起,运行后,即可得到汇总的表格C.xlsx了。- Set fso=WScript.CreateObject("Scripting.Filesystemobject")
- Set fd=fso.GetFolder(".")
-
- Set oExcle = CreateObject("Excel.Application")
- Set Axl = oExcle.Workbooks.Open(fd&"\A.xlsx")
- Set Bxl = oExcle.Workbooks.Open(fd&"\B.xlsx")
- Set Cxl = oExcle.Workbooks.Add()
-
- Axl.Worksheets(1).Copy Cxl.Worksheets(Cxl.Worksheets.Count)
- Cxl.Sheets(1).Name = "A"
- Bxl.Worksheets(1).Copy Cxl.Worksheets(Cxl.Worksheets.Count)
- Cxl.Sheets(2).Name = "B"
-
- Cxl.Sheets("A").UsedRange.Copy
- Cxl.Sheets("sheet1").range("A1").PasteSpecial
- lastRow = Cxl.Sheets("A").Cells(Cxl.Sheets("A").Rows.Count, 1).End(-4162).Row
- Cxl.Sheets("B").UsedRange.Copy
- Cxl.Sheets("sheet1").range("F1").PasteSpecial
- Cxl.Sheets("sheet1").columns("G").delete
- Cxl.Sheets("sheet1").Range("F2").Formula2 = "=INDEX(b!A:A,MATCH(TRUE,ISNUMBER(FIND(A2,b!B:B)),0))"
- Cxl.Sheets("sheet1").Range("F2:F"&lastRow).FillDown
- Cxl.Sheets("sheet1").Range("G2").Formula2 = "=INDEX(b!C:C,MATCH(F2,b!A:A,0))"
- Cxl.Sheets("sheet1").Range("G2:G"&lastRow).FillDown
- Cxl.Sheets("sheet1").Activate
- Cxl.Sheets("sheet1").Name = "汇总结果"
- Cxl.SaveAs fd&"\C.xlsx"
- Cxl.Close
-
- oExcle.Quit
- MsgBox "工作表汇总完毕!"
复制代码
作者: 司马光2008 时间: 2024-9-15 21:38
感谢各位大神们的答复
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |