[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 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        饮料        江苏        年度最佳团队

感谢各位大神们的答复

TOP

本帖最后由 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 "工作表汇总完毕!"
复制代码

TOP

本帖最后由 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
复制代码

TOP

试试
  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
复制代码
bat小白,请多指教!谢谢!

TOP

老板要求每天都要手动合并这些东东很麻烦,我本人Excel知识不多,请各位大神帮帮忙

TOP

返回列表