从别的excel引用数据(如何做到不导入统计外部数据或引用外部Excel数据)
前段时间,偶然看到一位名叫“KINGSON1412”的粉丝朋友私信提及两个问题“1、如何引用12个月份的工作簿里面的sheet1工作表的单元格出来?;2、不想将同一个文件夹的12个月份的工作簿导入到一个工作簿里面而直接进行最后单元格求和”,事实上,他的这个问题,如果说解决的话,我之前有一期头条文章和西瓜视频的作品关于“成功实现基于VBA下批量导入外部Excel相同格式文件数据”已经比较完美解决了这位粉丝朋友的问题,按理说,我今天无需再老生常谈啰嗦了吧。但是呢,我觉得还是有必要做,主要是关于不导入外部数据的情况隔空统计数据问题也算是一个小亮点吧。为了佐证该粉丝提的问题,我特意截图。如下图所示
图1 “KINGSON1412”粉丝的提问截图
说实在话,如果说是引用外部数据,我们可以通过跨文件路径引用的方式进行,比如在工作表单元格可以用公式:='路径\[外部的Excel文档文件名]工作表'!单元格 的形式实现,当然,这种引用方式是比较简单的,但是不足之处是较为机械不够灵活,尤其是外部有多个Excel工作簿文档时,就显得有些力不从心。所以,从高级应用的意义上讲,VBA后台技术应该才是解决这种问题的首选方案,同时也很容易达到解决不导入外部数据直接统计的效果。
为此,我们先来看看如何解决该“KINGSON1412”粉丝的第一个问题“如何引用12个月份的工作簿里面的sheet1工作表的单元格出来?”,然后再看第二个问题“不想将同一个文件夹的12个月份的工作簿导入到一个工作簿里面而直接进行最后单元格求和”如何解决。对于第一个问题,有了之前的类似头条作品,应该说是理解起来是较为容易的,第二个问题,即是我们本次作品的创新点,还是先来解决第一个问题吧。
一、用VBA后台技术强势“引用”外部多个工作簿数据
为什么我们这里的引用要打上双引号呢?其目的是说明,我们表象上给人感觉是引用外部数据,事实上是从外部捕获吸取数据,说本质一点就是复制外部多个工作簿数据,而且从“感觉上”给人是没有打开外部这些多个工作簿文件的感觉。
(一)增加两个前端交互按钮
为了实现交互的友好性,我们增设了简单的交互按钮。如下图
图2 前端界面
(二)准备一些外部的Excel工作簿文档素材并统一命名
为了方便操作,我们准备了如下图所示的外部Excel工作簿数据素材。如下图所示
图3 备用的外部Excel工作簿数据素材
(三)后台功能代码实现
我们还是以截图的方式给各位呈现。如下系列截图所示
图4“引用”外部数据VBA后台功能代码截图1
图5“引用”外部数据VBA后台功能代码截图2
图6“引用”外部数据VBA后台功能代码截图3
(四)“引用”外部数据VBA后台执行效果体验
1、点击前端表单控件按钮<汇集同路径下的外部Excel文档数据>,将看到“引用”外部数据成功的效果。如下图所示
图7 “引用”外部数据成功的效果
2、如果已经完全导入外部数据了,而此时再次强行点击前端表单控件按钮<汇集同路径下的外部Excel文档数据>,将看到“禁止操作”的提示。如下图所示
图8 完全导入外部数据后将不允许进行再次导入操作
3、如果没有外部数据,而此时强行点击前端表单控件按钮<汇集同路径下的外部Excel文档数据>,将看到“先准备外部数据”的提示。如下图所示
图9 没有外部数据将提示用户先准备外部数据
二、用VBA后台技术轻松实现不导入外部多个工作簿数据的数据统计
这一点,我刚才就说了,比较容易办到,给人感觉上是没有打开外部数据工作簿实施外部数据统计,事实上,我们也是利用了和上面类似的方法,只不过,我们无需导入外部数据而已,统计的操作机理是再程序运行中完成数据的统计和统计结果数据的回传而已,这样也减小了程序运行的时间复杂度和空间复杂度,使得运行更加高效。前端界面涉及和备用的外部数据素材在上面已经说明了,这里我们至分享实现的功能代码和执行效果截图。
(一)后台功能代码实现
同上面一样,我们还是以截图的方式给各位呈现。如下系列截图所示
图10 不导入外部数据实现统计数据的VBA功能代码截图1
图11 不导入外部数据实现统计数据的VBA功能代码截图2
(二)不导入外部数据而统计外部数据的执行效果体验
1、点击前端表单控件按钮<仅汇总外部Excel文档数据累加和>,将看到不导入外部数据而统计外部数据成功的效果。如下图所示
图12 不导入外部数据而统计外部数据成功的效果
2、如果已经统计过来不导入的外部数据了,而此时再次强行点击前端表单控件按钮<仅汇总外部Excel文档数据累加和>,将看到“禁止操作”的提示。如下图所示
图13 已经统计过来不导入的外部数据后将不允许进行再次统计操作
3、如果没有外部数据,而此时强行点击前端表单控件按钮<仅汇总外部Excel文档数据累加和>,将看到“先准备外部苏剧”的提示。如下图所示
图14 没有外部数据将提示用户先准备外部数据
好了,到现在为止,我们将该“KINGSON1412”粉丝的分享完了,这中间的“引用”外部Excel工作簿数据技术实际上是利用了“拷贝”外部Excel工作簿数据的行为(语法:“源数据区域.Copy Destination:=目标数据区域”),通过循环,每次都用一个临时的工作簿对象变量去指向打开的外部工作簿文(打开的工作簿文档为了隐藏其显示,我们利用“Windows(工作簿名称).Visible=False”方法实现视觉上的不显示),然后用一个数据范围区域对象指向具体要“拷贝”的该工作簿的数据区域,“拷贝”该区域的数据到目标工作簿指定的区域,最后,不保存源外部数据的工作簿文档形式进行关闭(语法:“源外部数据工作簿.Close False”),至此,就完成了功能意义上的外部工作簿数据的形式上的“引用”;另外,“不导入外部工作簿数据的情况下实现对外部数据的统计计算”其实和“引用”外部工作簿数据的方法类似,只是省去了“拷贝”外部的数据的功能,替代的是直接每循环一次,都统计一下打开的临时外部数据,除此之外,其它的都和“引用”的方法完全一致。现在,大家可以比对我之前的做过的类似案例的,进行选择适合自己的方法解决外部数据导入和统计的问题了,大胆去试试吧!
最后,还是那句老话,非常感谢各位粉丝朋友的长期关注(头条号:跟我学Office高级办公)、推广和对作品的点评!疫情快过去了,现在已经是深秋了,天气也已经骤然降温了,大家可要多多注意身体健康别感冒哦,与此同时,也请多多关注我的Office高级办公其他的后续原创作品哦!谢谢!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com