生产每月都会制作文件并公示,现在想做一个EXCEL,写一个宏,将文件夹里的3个月的公示EXCEL里的数据读取出来,并合并,然后点击姓名便生成一个新的sheel.将这个人12个月的完成定额绘制成一个曲线图。在这12个月里面,职工可能会增减。
请问这样可以实现吗?
数据:见附件。
更新求助:
因为对VBA并不太熟悉,看了一下午的帖子,写了下面这一段,想法就是根据姓名查询
--------------------------------------------------------------------------------
- VB code
Sub test()Set Cnn = CreateObject("adodb.connection") h = 2 f = Dir(ThisWorkbook.Path & "\*.xls") Do While f > " " If f <> ThisWorkbook.Name Then Cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.Path & "\" & f Sql = "select 完成定额 from [月公示$] where 姓名 = 张三" Cells(a, 1).CopyFromRecordset Cnn.Execute(Sql) '每次到这里就出错,一直查不明白原因。 ed = [b65536].End(3).Row + 1 Cells(h, 1).Resize(ed - h, 1) = f h = ed Cnn.Close '断开cnn的链接 End If f = Dir LoopEnd Sub
--------------------------------------------------------------------------------
这里是查询数据然后放到一个新的表里,绘制成统计图还没写出来。求助!
好像不能上传数据附件,为了尽可能表达清楚问题,以下是附件的截图。(图片也不能),我再放到其他空间上。
一个文件夹里的多个EXCEL文件
数据1
数据2
数据3
希望得到的结果
发个带图片的帖子也不容易,希望可以得到高手指教。
------解决方案--------------------------------------------------------
1、
每月的表里,“一月、二月、三月”之类那一行删除掉
2、
Sql = "select 完成定额 from [月公示$] where 姓名 = 张三"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//张三加单引号括起来
Sql = "select 完成定额 from [月公示$] where 姓名 = '张三'"
3、注意里面变更,有些都没定义,比如a
4、这句ed = [b65536].End(3).Row + 1,第一次循环时,ed为2,h也为2,那下面的
Cells(h, 2).Resize(ed - h, 1) = f
相当于
Cells(h, 2).Resize(0, 1) = f 这是语法错误了Resize不能为0