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

[文本处理] 如何根据B表格的第一列将A表格第一列相同内容的同行其他列的内容插入到B表格

[复制链接]
发表于 2015-9-10 14:48:15 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-21 21:44 编辑

把 1.xls 文件号码内容,分别导入2.xls 号码中

结果为3.xls

急用。谢谢。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-9-10 15:41:21 | 显示全部楼层
勿发无意义的标题
 楼主| 发表于 2015-9-10 16:05:07 | 显示全部楼层
回复 2# pcl_test


    改过来了
发表于 2015-9-10 16:22:52 | 显示全部楼层
先将1.xls另存为csv文件
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=1" %%a in ('findstr /v "^,$" "1.csv"') do (
  3.     set "str=%%a"
  4.     if "!str:~,1!" neq "," (
  5.         set/a n+=1
  6.         set #!n!=%%a
  7.     ) else for %%b in (!n!) do set #!n!=!#%%b!%%a
  8. )
  9. (echo;姓  名,号  码,号  码
  10. for /f "tokens=1* delims==" %%c in ('set #') do echo;%%d
  11. )>"2.csv"
  12. pause
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2015-9-10 16:40:40 | 显示全部楼层
能不能2.csv的姓名不要变动
 楼主| 发表于 2015-9-10 16:42:06 | 显示全部楼层
回复 4# pcl_test


    就是以2.csv的姓名排序,把对应的号码直接导入2.csv
发表于 2015-9-10 17:03:02 | 显示全部楼层
本帖最后由 pcl_test 于 2015-9-11 10:25 编辑

先将1.xls、2.xls分别另存为csv文件
  1. @echo off&setlocal enabledelayedexpansion
  2. set "f1=1.csv"
  3. set "f2=2.csv"
  4. set "f3=3.csv"
  5. for /f "skip=1 delims=" %%a in ('findstr /v "^,$" "%f1%"') do (
  6.     set "str=%%a"
  7.     if "!str:~,1!" neq "," (
  8.         for /f "tokens=1 delims=," %%b in ("%%a") do set #%%b=%%a&set name=%%b
  9.     ) else for /f %%c in ("!name!") do set #%%c=!#%%c!%%a
  10. )
  11. (set /p t=<"%f2%"&echo;!t!
  12. for /f skip^=1^ usebackq^ tokens^=1^ delims^=^",  %%a in ("%f2%") do (
  13.     for /f %%b in ("%%a") do if defined #%%~nxb (echo;!#%%~nxb!) else echo;%%~nxb
  14. ))>"%f3%"
  15. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
fcxk + 1 谢谢!搞定

查看全部评分

 楼主| 发表于 2015-9-10 19:56:23 | 显示全部楼层
回复 7# pcl_test


    还是会乱,不会按2.csv文件里的名字来。
发表于 2015-9-10 20:13:44 | 显示全部楼层
回复 8# fcxk
发实际原件
发表于 2015-9-10 23:06:09 | 显示全部楼层
本帖最后由 回家路上 于 2015-9-11 09:50 编辑

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "skip=2 tokens=1,2 delims=," %%i in (1.csv) do (
  3.         set line=%%i,%%j
  4.         if "!line:~,1!"=="1" (
  5.                 set nn=!nn!,%%i
  6.                 set !name!=!nn:,,=,!&set name=
  7.         )else (
  8.                 if defined name set !name!=!nn!
  9.                 set nn=!line!&set name=%%i
  10.         )
  11. )
  12. if defined name set !name!=!nn!
  13. (set /p t=<"2.csv"&echo;!t!
  14.         for /f "skip=1 delims=," %%i in (2.csv) do (
  15.                 set line=%%i
  16.                 set line=!line: =!
  17.                 set line=!line:        =!
  18.                 set line=!line:"=!
  19.                 if defined !line! (
  20.                         for %%a in (!line!) do echo;!%%a!
  21.                 ) else echo;!line!
  22.         )
  23. )>3.csv
  24. pause & exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
fcxk + 1 谢谢

查看全部评分

 楼主| 发表于 2015-9-11 09:05:43 | 显示全部楼层
本帖最后由 fcxk 于 2015-9-11 09:08 编辑

回复 9# pcl_test


    实际文件

把1文件的号码分别导入2文件中。2文件中的姓名排序不变,还有就是能不能把只有一个号码时,这个代码还会产生一个空行,能不不要有空行,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2015-9-11 09:09:15 | 显示全部楼层
回复 10# 回家路上


    一样,姓名会乱
发表于 2015-9-11 09:49:52 | 显示全部楼层
回复 12# fcxk


已修改
发表于 2015-9-11 10:07:26 | 显示全部楼层
回复 11# fcxk
7楼已改,实际原件不应该是xls吗?
发表于 2015-9-11 13:52:25 | 显示全部楼层
本帖最后由 terse 于 2015-9-11 14:42 编辑

xls文件 试试这样呢
  1. @if(0)==(0) echo off
  2. cscript -nologo -e:jscript %0 "%~dp01.xls" "%~dp02.xls" "%~dp03.xls"
  3. pause & exit
  4. @end
  5. var  xlApp = new ActiveXObject("Excel.Application");
  6. var xlBook = xlApp.Workbooks.open(WScript.Arguments.Item(0));
  7. xlBook.worksheets(1).activate;
  8. var XlSheet = xlBook.activeSheet;
  9. var Ojb = {};
  10. var Count = XlSheet.usedrange.rows.count;
  11. for(var i = 3; i <= Count; i += 2) {
  12.     var L1 = XlSheet.Cells(i, 1).value;
  13.     var L2 = XlSheet.Cells(i, 2).value;
  14.     var L3 = XlSheet.Cells(i + 1, 2).value;
  15.     Ojb[L1] = L3 ? L2 ? [L2, L3] : [L3] : L2 ? [L2] : "";
  16. }
  17. xlBook = xlApp.Workbooks.open(WScript.Arguments.Item(1));
  18. xlBook.worksheets(1).activate;
  19. XlSheet = xlBook.activeSheet;
  20. Count = XlSheet.usedrange.rows.count;
  21. for (i = 2; i <= Count; i++) {
  22.      var len = Ojb[XlSheet.Cells(i, 1)].length
  23.      if (len) {
  24.          if (len >1) {
  25.              XlSheet.Cells(i, 2).value = Ojb[XlSheet.Cells(i, 1)][0];
  26.              XlSheet.Cells(i, 3).value = Ojb[XlSheet.Cells(i, 1)][1];
  27.          }
  28.          else { XlSheet.Cells(i, 2).value = Ojb[XlSheet.Cells(i, 1)] }
  29.   }
  30. }
  31. //xlBook.SaveAs(WScript.Arguments.Item(2));
  32. xlBook.Save()
  33. xlBook.Close();
  34. xlApp.Quit();
复制代码

评分

参与人数 1技术 +1 收起 理由
fcxk + 1 完美运行想要的结果

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 16:24 , Processed in 0.014001 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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