Board logo

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

作者: fcxk    时间: 2015-9-10 14:48     标题: 如何根据B表格的第一列将A表格第一列相同内容的同行其他列的内容插入到B表格

本帖最后由 pcl_test 于 2016-7-21 21:44 编辑

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

结果为3.xls

急用。谢谢。。。
作者: pcl_test    时间: 2015-9-10 15:41

勿发无意义的标题
作者: fcxk    时间: 2015-9-10 16:05

回复 2# pcl_test


    改过来了
作者: pcl_test    时间: 2015-9-10 16:22

先将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
复制代码

作者: fcxk    时间: 2015-9-10 16:40

能不能2.csv的姓名不要变动
作者: fcxk    时间: 2015-9-10 16:42

回复 4# pcl_test


    就是以2.csv的姓名排序,把对应的号码直接导入2.csv
作者: pcl_test    时间: 2015-9-10 17:03

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

作者: fcxk    时间: 2015-9-10 19:56

回复 7# pcl_test


    还是会乱,不会按2.csv文件里的名字来。
作者: pcl_test    时间: 2015-9-10 20:13

回复 8# fcxk
发实际原件
作者: 回家路上    时间: 2015-9-10 23:06

本帖最后由 回家路上 于 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
复制代码

作者: fcxk    时间: 2015-9-11 09:05

本帖最后由 fcxk 于 2015-9-11 09:08 编辑

回复 9# pcl_test


    实际文件

把1文件的号码分别导入2文件中。2文件中的姓名排序不变,还有就是能不能把只有一个号码时,这个代码还会产生一个空行,能不不要有空行,
作者: fcxk    时间: 2015-9-11 09:09

回复 10# 回家路上


    一样,姓名会乱
作者: 回家路上    时间: 2015-9-11 09:49

回复 12# fcxk


已修改
作者: pcl_test    时间: 2015-9-11 10:07

回复 11# fcxk
7楼已改,实际原件不应该是xls吗?
作者: terse    时间: 2015-9-11 13:52

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





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2