找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14034|回复: 5

[文件操作] Excel文本处理

[复制链接]
发表于 2024-9-1 00:51:21 | 显示全部楼层 |阅读模式
各位大神们,请教一个问题,如何把两个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        饮料        江苏        年度最佳团队
 楼主| 发表于 2024-9-1 00:54:01 | 显示全部楼层
老板要求每天都要手动合并这些东东很麻烦,我本人Excel知识不多,请各位大神帮帮忙
发表于 2024-9-1 11:28:42 | 显示全部楼层
试试
  1. @echo off
  2. rem 保存为ansi编码
  3. cd /d "%~dp0"
  4. for /f "useback tokens=1* delims=," %%a in ("b.csv") do (
  5.         set _%%a=%%b
  6. )
  7. (
  8.         echo 城市,团队,小队,分队,奖品,省份,描述
  9.         for /f "useback skip=1 delims=" %%a in ("a.csv") do (
  10.                 for /f "delims=," %%b in ("%%a") do (
  11.                         (for /f "tokens=1* delims=_=" %%c in ('set _ ^|find "%%b"') do (
  12.                                 for %%e in (%%d) do (
  13.                                         set str=%%e
  14.                                 )
  15.                                 call echo %%a,%%c,%%str%%
  16.                         )) || echo %%a
  17.                 )
  18.         )
  19. ) > "c.csv"
  20. pause
复制代码
发表于 2024-9-1 15:50:29 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-1 15:56 编辑

回复 1# 司马光2008

以下代码假设一楼示例文件:
   A-Excel文件 = a.txt
   B-Excel文件 = b.txt
生成的合并结果:
   C-Excel文件 = c.txt

  1. @echo off & (
  2. echo,城市        团队        小队        分队        奖品        省份        描述
  3. for /f "skip=1 tokens=1* delims= " %%a in (a.txt) do (
  4.         for /f "tokens=1-3 delims= " %%x in ('findstr /ic:"%%a" b.txt') do echo,%%a        %%b        %%x        %%z
  5. ))>c.txt
  6. pause&exit/b
复制代码
发表于 2024-9-1 21:44:17 | 显示全部楼层
本帖最后由 ppll2030 于 2024-9-1 21:50 编辑

回复 1# 司马光2008


    假设有A.xlsx,B.xlsx两个表格,
把下面的代码保存为VBS文件,和上面两个表格放在一起,运行后,即可得到汇总的表格C.xlsx了。
  1. Set fso=WScript.CreateObject("Scripting.Filesystemobject")
  2. Set fd=fso.GetFolder(".")

  3. Set oExcle = CreateObject("Excel.Application")
  4. Set Axl = oExcle.Workbooks.Open(fd&"\A.xlsx")
  5. Set Bxl = oExcle.Workbooks.Open(fd&"\B.xlsx")
  6. Set Cxl = oExcle.Workbooks.Add()

  7. Axl.Worksheets(1).Copy Cxl.Worksheets(Cxl.Worksheets.Count)
  8. Cxl.Sheets(1).Name = "A"
  9. Bxl.Worksheets(1).Copy Cxl.Worksheets(Cxl.Worksheets.Count)
  10. Cxl.Sheets(2).Name = "B"

  11. Cxl.Sheets("A").UsedRange.Copy
  12. Cxl.Sheets("sheet1").range("A1").PasteSpecial
  13. lastRow = Cxl.Sheets("A").Cells(Cxl.Sheets("A").Rows.Count, 1).End(-4162).Row
  14. Cxl.Sheets("B").UsedRange.Copy
  15. Cxl.Sheets("sheet1").range("F1").PasteSpecial
  16. Cxl.Sheets("sheet1").columns("G").delete
  17. Cxl.Sheets("sheet1").Range("F2").Formula2 = "=INDEX(b!A:A,MATCH(TRUE,ISNUMBER(FIND(A2,b!B:B)),0))"
  18. Cxl.Sheets("sheet1").Range("F2:F"&lastRow).FillDown
  19. Cxl.Sheets("sheet1").Range("G2").Formula2 = "=INDEX(b!C:C,MATCH(F2,b!A:A,0))"
  20. Cxl.Sheets("sheet1").Range("G2:G"&lastRow).FillDown
  21. Cxl.Sheets("sheet1").Activate
  22. Cxl.Sheets("sheet1").Name = "汇总结果"
  23. Cxl.SaveAs fd&"\C.xlsx"
  24. Cxl.Close

  25. oExcle.Quit
  26. MsgBox "工作表汇总完毕!"
复制代码
 楼主| 发表于 2024-9-15 21:38:22 | 显示全部楼层
感谢各位大神们的答复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:51 , Processed in 0.014944 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表