Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用选项将多个excel合并到单个工作表_Vba_Excel - Fatal编程技术网

Vba 使用选项将多个excel合并到单个工作表

Vba 使用选项将多个excel合并到单个工作表,vba,excel,Vba,Excel,我在一个excel文件中有两张工作表,第一张是: 表格:个人 Code date start end 2301 12/08/1993 08:02 08:17 4221 12/08/1993 09:04 09:25 2312 12/08/1993 10:02 10:28 1284 19/09/1994 11:02 11:21 2312 19/09/1994 15:57 16:20 1284 23/06/199

我在一个excel文件中有两张工作表,第一张是:

表格:个人

Code    date        start   end
2301    12/08/1993  08:02   08:17
4221    12/08/1993  09:04   09:25
2312    12/08/1993  10:02   10:28
1284    19/09/1994  11:02   11:21
2312    19/09/1994  15:57   16:20
1284    23/06/1995  17:12   17:35
2312    22/06/1996  13:14   13:32
4221    22/06/1996  15:53   16:13
4221    05/05/1999  08:06   08:22
2418    05/05/1999  08:10   08:33
2301    05/05/1999  09:12   09:37
2301    05/05/1999  09:28   10:28
2301    05/05/1999  13:28   13:38
是一个公司的人员列表,其中任何人都可以通过徽章[row
code
]来识别,我希望通过
code
将数据合并到一个人的服装单中,例如,对于拥有编号为2301的徽章的人,他有自己的称为B2301的表,因此基于第一张表“person”我希望导入这样一个人的数据,按此人的编号分组:

活页B2301

 date       Period(min)
 12/08/1987 12
 ....       ...
因此,周期将从
start
end
行计算

我尝试使用这个公式,但它对我不起作用:

=IFERROR(索引(Sheet1!A$2:A$14,小)(如果(Sheet1!A$2:$A$14=INT(右(单元格(“文件名”),A1),LEN(单元格(“文件名”),A1)-查找(“]”,单元格(“文件名”,A1))),行(Sheet1!A$2:A$14)-行(Sheet1!A$2)+1),行(Sheet1!A$2:A2)),“”


有什么想法吗?

这需要你做大量的研究。您需要:

  • 创建VBA宏
  • 定义变量并创建循环以查看主工作表
  • 根据代码创建图纸名称
  • 检查工作表是否已存在,如果不存在,请创建它
  • 将值从第一页复制到“代码”页
  • 处理完所有的值后,遍历每个表,循环遍历值并计算周期

  • 这不是一个微不足道的代码量。对这6项进行研究并编写代码。如果您有,请显示它,我们可以为您提供更多指导。

    要填充日期,请将其放在A2中:

    =IFERROR(INDEX(Sheet1!$B$2:$B$14,MATCH(SMALL(IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,Sheet1!$B$2:$B$14),ROW()-1),IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,Sheet1!$B$2:$B$14),0)),"")
    
    要填充周期,请将其放入B2中:

    =IFERROR(TEXT(INDEX(Sheet1!$D$2:$D$14,MATCH(SMALL(IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,IF(Sheet1!$B$2:$B$14=A2,Sheet1!$C$2:$C$14)),COUNTIF($A$1:$A2,A2)),IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,IF(Sheet1!$B$2:$B$14=A2,Sheet1!$C$2:$C$14)),0))-INDEX(Sheet1!$C$2:$C$14,MATCH(SMALL(IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,IF(Sheet1!$B$2:$B$14=A2,Sheet1!$C$2:$C$14)),COUNTIF($A$1:$A2,A2)),IF(--MID(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),2,999) = Sheet1!$A$2:$A$14,IF(Sheet1!$B$2:$B$14=A2,Sheet1!$C$2:$C$14)),0)),"[m]"),"")
    
    两者都是数组公式,需要使用Ctrl-Shift-Enter键确认。然后将这两行复制到所需的行


    这个公式有什么问题?会发生什么?另外,如果您不是在寻找VBA解决方案,我会删除excel VBA标记。如果您正在寻找VBA解决方案,我会遵循PKatona的建议。即使我做了很多修改,它也会给我这个错误
    我们发现这个公式有问题,请尝试单击“插入函数”
    ,可能我输入了一些错误,请您在真实文件中尝试您的示例,以确保它工作正常吗?我确实将它放在了真实文件中,这就是画面。它对我有用。我没有拍照,也没有把数字放进去。上面的图片是我真实的文件。听起来你希望有人为你编写代码,这不是本网站的目的。这里的期望是您已经编写了一些代码,需要进一步的指导。我告诉你,我会让你开始的。我一整天都会查的。你向我展示你的进步,我会帮助你更进一步。1.在Person excel工作簿上,单击“查看”选项卡,然后单击最右侧的“宏”图标。2.键入“ProcessBadges”作为宏名称,然后单击“创建”。完成后请告诉我。我稍后再查。