标题: [文本处理] 如何根据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文件- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1" %%a in ('findstr /v "^,$" "1.csv"') do (
- set "str=%%a"
- if "!str:~,1!" neq "," (
- set/a n+=1
- set #!n!=%%a
- ) else for %%b in (!n!) do set #!n!=!#%%b!%%a
- )
- (echo;姓 名,号 码,号 码
- for /f "tokens=1* delims==" %%c in ('set #') do echo;%%d
- )>"2.csv"
- 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文件- @echo off&setlocal enabledelayedexpansion
- set "f1=1.csv"
- set "f2=2.csv"
- set "f3=3.csv"
- for /f "skip=1 delims=" %%a in ('findstr /v "^,$" "%f1%"') do (
- set "str=%%a"
- if "!str:~,1!" neq "," (
- for /f "tokens=1 delims=," %%b in ("%%a") do set #%%b=%%a&set name=%%b
- ) else for /f %%c in ("!name!") do set #%%c=!#%%c!%%a
- )
- (set /p t=<"%f2%"&echo;!t!
- for /f skip^=1^ usebackq^ tokens^=1^ delims^=^", %%a in ("%f2%") do (
- for /f %%b in ("%%a") do if defined #%%~nxb (echo;!#%%~nxb!) else echo;%%~nxb
- ))>"%f3%"
- 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 编辑
- @echo off & setlocal enabledelayedexpansion
- for /f "skip=2 tokens=1,2 delims=," %%i in (1.csv) do (
- set line=%%i,%%j
- if "!line:~,1!"=="1" (
- set nn=!nn!,%%i
- set !name!=!nn:,,=,!&set name=
- )else (
- if defined name set !name!=!nn!
- set nn=!line!&set name=%%i
- )
- )
- if defined name set !name!=!nn!
- (set /p t=<"2.csv"&echo;!t!
- for /f "skip=1 delims=," %%i in (2.csv) do (
- set line=%%i
- set line=!line: =!
- set line=!line: =!
- set line=!line:"=!
- if defined !line! (
- for %%a in (!line!) do echo;!%%a!
- ) else echo;!line!
- )
- )>3.csv
- 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文件 试试这样呢- @if(0)==(0) echo off
- cscript -nologo -e:jscript %0 "%~dp01.xls" "%~dp02.xls" "%~dp03.xls"
- pause & exit
- @end
- var xlApp = new ActiveXObject("Excel.Application");
- var xlBook = xlApp.Workbooks.open(WScript.Arguments.Item(0));
- xlBook.worksheets(1).activate;
- var XlSheet = xlBook.activeSheet;
- var Ojb = {};
- var Count = XlSheet.usedrange.rows.count;
- for(var i = 3; i <= Count; i += 2) {
- var L1 = XlSheet.Cells(i, 1).value;
- var L2 = XlSheet.Cells(i, 2).value;
- var L3 = XlSheet.Cells(i + 1, 2).value;
- Ojb[L1] = L3 ? L2 ? [L2, L3] : [L3] : L2 ? [L2] : "";
- }
- xlBook = xlApp.Workbooks.open(WScript.Arguments.Item(1));
- xlBook.worksheets(1).activate;
- XlSheet = xlBook.activeSheet;
- Count = XlSheet.usedrange.rows.count;
- for (i = 2; i <= Count; i++) {
- var len = Ojb[XlSheet.Cells(i, 1)].length
- if (len) {
- if (len >1) {
- XlSheet.Cells(i, 2).value = Ojb[XlSheet.Cells(i, 1)][0];
- XlSheet.Cells(i, 3).value = Ojb[XlSheet.Cells(i, 1)][1];
- }
- else { XlSheet.Cells(i, 2).value = Ojb[XlSheet.Cells(i, 1)] }
- }
- }
- //xlBook.SaveAs(WScript.Arguments.Item(2));
- xlBook.Save()
- xlBook.Close();
- xlApp.Quit();
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |