Board logo

标题: [文件操作] 求助:提取excel表格数据到另一个表格里,用批处理或VBA如何实现? [打印本页]

作者: CAIT    时间: 2022-11-21 21:28     标题: 求助:提取excel表格数据到另一个表格里,用批处理或VBA如何实现?

核酸筛查时一般会用混管方式,每一管人员信息在一个excel表中,比如下面内容——因excel表格无法上传,我转为csv:
  1. 被采样人姓名,证件号码,证件类型,手机号,与本人关系,采集时间,采样点名称,采样员姓名,采样人手机号,试管码
  2. 张三,510229194201263125,身份证,13752938925,本人,2022-11-21 09:04:03,妇幼医院,石人竹,18996179725,10003813400195
  3. 李四,510229194301263126,身份证,13752938926,本人,2022-11-21 09:05:03,妇幼医院,石人竹,18996179725,10003813400195
  4. 王五,510229194501263127,身份证,13752938927,本人,2022-11-21 09:06:03,妇幼医院,石人竹,18996179725,10003813400195
复制代码
然后,混管追阳过程中,需要将上述信息导入到另一个表中,csv内容如下:
  1. 序号,采样点,试管码,管长,人数,阳性
  2. 1,妇幼医院,10003813400195,张三,3,1
复制代码
这个导入过程,用批处理能否实现?或者VBA?
谢谢!
作者: idwma    时间: 2022-11-22 21:34

  1. #@&cls&powershell "type '%~f0'|out-string|iex"&pause&exit
  2. $a=new-object -com excel.application
  3. $a.Application.DisplayAlerts=0
  4. $z=@{}
  5. dir *.xls*|%{
  6. $b=$_.name
  7. $c=$a.workbooks.open($_.fullname)
  8. $c.saveas("$b.csv",6)
  9. $c.close()
  10. gc "$b.csv"|ConvertFrom-Csv|%{if($z[$_.试管码] -eq $null){$z[$_.试管码]=@{}};$z[$_.试管码][0]+=1;$z[$_.试管码][1]='{0},{1}'-f $_.采样点名称,$_.试管码}
  11. }
  12. $a.quit()
  13. $d=@('序号,采样点,试管码,管长,人数,阳性')
  14. $z.keys|%{$d+='{0},{1},{2},{3},{4}' -f ++$i,$z[$_][1],"张三",$z[$_][0],1}
  15. $d|sc 1.csv
复制代码

作者: terse    时间: 2022-11-23 22:52

  1. @echo off&setlocal enabledelayedexpansion
  2. rem 存为ansi文件
  3. for /f "tokens=10 delims=," %%a in (a.csv) do set /a _%%a+=1
  4. (echo;序号,采样点,试管码,管长,人数,阳性
  5. for /f "skip=1 tokens=1,7,10 delims=," %%a in (a.csv) do (
  6.      set /a n+=1
  7.      echo;!n!,%%b,%%c,%%a,!_%%c!,1
  8. ))>b.csv
  9. pause
复制代码





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