Board logo

标题: [文本处理] 批处理如何对Excel表格的数据按年级进行人数统计及人名汇总? [打印本页]

作者: mick00034    时间: 2016-4-2 23:33     标题: 批处理如何对Excel表格的数据按年级进行人数统计及人名汇总?

目标文件是excel,每个名字后面对应一个数字,由1或2或3构成。看图参考,每个数字代表不同的年级。批处理或其他方法也行。运算结果放在新的记事本就行。

批处理后的结果要求:
一年级人数(3名) :张一,李善,赵武。
二年级人数(3名) :张一,王二,王二。
三年级人数(2名) :李善,赵武。
班级总人数:8名。

作者: pcl_test    时间: 2016-4-2 23:58

只想说Excel自带分类汇总
作者: codegay    时间: 2016-4-3 00:20

一句话,楼主暴露了,Excel没学好\批处理也没学好.

以及楼主帖子的原标题,"批处理,数学计算可以吗?"
这跟科不学科学计算的,毛关系没有.就是普通的计算.
作者: mick00034    时间: 2016-4-3 19:58

回复 2# pcl_test

Excel自带分类汇总,我想表达的是批处理的方法应用,谢谢啦。
作者: happy886rr    时间: 2016-4-3 20:02

回复 4# mick00034
那你会导出csv不?
作者: 林小七    时间: 2016-4-3 20:23

你以为我大ms的宏(vba)是吃白饭的么?
作者: pcl_test    时间: 2016-4-3 20:25

方法就像这样
  1. @echo  off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2" %%a in ('more +9 "%~f0"') do (
  4.     set "#%%b=!#%%b!%%a "
  5.     set /a _%%b+=1
  6. )
  7. for /f "delims=#=" %%a in ('set #') do echo;%%a !_%%a! !#%%a!&set /a s+=!_%%a!
  8. echo;%s%
  9. pause
  10. a 2
  11. b 3
  12. c 1
  13. c 2
  14. e 1
  15. f 4
  16. a 1
  17. y 4
复制代码

作者: codegay    时间: 2016-4-3 21:37

赌五毛,楼主继续来追问版主怎么弄.
作者: bailong360    时间: 2016-4-3 21:37

本帖最后由 bailong360 于 2016-4-3 22:33 编辑
  1. 1>1/* :
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. set "xlsFile=C:\test.xls"
  5. for /f "delims=" %%i in ("%xlsFile%") do set "xlsFile=%%~fi"
  6. for /f "tokens=1,2 delims=, " %%i in ('cscript -nologo -e:jscript "%~f0" "%xlsFile%"') do (
  7.     set /a #%%j+=1
  8.     set ##%%j=%%i,!##%%j!
  9. )
  10. for /f "delims=#=" %%i in ('set ##') do echo %%i年级人数(!#%%i!):!##%%i:~,-1!.
  11. del "%xlsFile:.xls=.csv%"
  12. pause
  13. exit /b
  14. */
  15. var xlsFile = WScript.Arguments.Item(0);
  16. var csvFile = xlsFile.replace('.xls', '.csv');
  17. var FSO = new ActiveXObject('Scripting.FileSystemObject');
  18. var Excel = new ActiveXObject('Excel.Application');
  19.     Excel.DisplayAlerts = 0;
  20. var WBook = Excel.Workbooks.Open(xlsFile);
  21.     WBook.SaveAs(csvFile , 6);
  22.     WBook.Save();
  23.     WBook.Close();
  24. Excel.Quit();
  25. WScript.Echo(FSO.OpenTextFile(csvFile , 1).ReadAll().replace(/(\d+),/g, '$1 \r\n').replace(/^,/gm, ''));
复制代码
练手来的
话说怎么才能不弹那个是否保存的对话框...
作者: pcl_test    时间: 2016-4-3 22:20

回复 9# bailong360

直接屏蔽掉
Excel.DisplayAlerts = 0;
作者: pcl_test    时间: 2016-4-3 22:23

回复 8# codegay

嗯,你会暴富的




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