当心!你的Vlookup函数可能会泄密!
Vlookup函数是大家再熟悉不过的一个函数了,很多人参加工作后学会的第一个有用的函数就是Vlookup,大家使用的也是很频繁,很是得心应手。可是,你知道吗?你的Vlookup函数会导致泄密!
01
这绝不是危言耸听!本着小心求证的原则,我还做了两个虚拟机,分别安装了Office 2007和Office 2010来测试。下面就跟我一起来看看Vlookup函数究竟是怎样泄密的。
1、准备两个文件,分别是“我的文件”和“我的数据源”。为了观察文件大小的变化,我特意向“我的数据源”文件中写入了5万行数据,文件大小达到了851 KB。而“我的文件”中仅有少量数据,所以文件大小只有10 KB。

以下是“我的文件”中的数据,在B列应用Vlookup公式,从“我的数据源”文件中查询供应商信息。

以下是“我的数据源”中的信息。

2、在“我的文件”中的B列添加Vlookup公式,从“我的数据源”文件中查询供应商信息。

保存“我的文件”,我们可以看到文件大小竟然变成了879 KB!

究竟发生了什么?仅仅一个Vlookup公式,竟然让文件从10 KB增加到879 KB!
3、从硬盘中将“我的数据源”文件彻底删除,或者更改文件名。

然后我们再观察“我的文件”,奇怪的是,即使数据源被删除或者改名,Vlookup公式依然能查询到结果,即使我们做重新计算、筛选等操作,Vlookup公式依然有效。

这说明什么呢?结合前面我们提到的文件大小明显增加,我们可以猜测Excel将“我的数据源”中的数据已经打包到“我的文件”中了。
了解了这一点,我们就可以将“我的数据源”中的数据还原出来了。
在“我的文件”中新建一个工作表,复制Vlookup公式中的数据源路径,在后面添加上“A1”这个单元格地址,然后将公式输入到新建工作表的A1单元格。
公式示例:
='H:\08 ExcelEasy\02 推送文章材料\20220925\[我的数据源.xlsx]Sheet1'!A1
注意:在输入公式后,Excel会弹出以下对话框,这是因为公式指向的源文件“我的数据源”已经不存在了。不过没关系,我们点击“取消”就可以了。

然后拖动复制A1单元格的公式,当行或列出现#REF!时,说明到了数据的边界。这样就可以获得数据源文件中的数据。这里得到的数据是Vlookup公式中的查找区域中的数据,如果数据源文件中有更多的数据,但是没有包含在Vlookup函数的查找区域中,则无法通过这种方式获得。
想象一下,假如你把带有Vlookup公式的文件发给了别人,别人用一个等号公式就可以轻易地获取你的数据源文件中的数据,如果里面有敏感信息,就会导致泄密了。

02
那么究竟是什么导致的这种问题呢?
其实是Excel的一个选项设置导致了Excel文件保存了外部链接中的数据。
在Excel中依次点击“文件”、“选项”、“高级”,向下拖动右侧的垂直滚动条,找到“保存外部链接数据”,取消勾选这个选项,然后点击“确定”按钮。这样Excel就不会保存外部链接中的数据了。

取消勾选后,我们再保存文件,发现“我的文件”已经变成正常大小了。

重新打开“我的文件”,这时Excel表格中还是有数据的。但是当我们做筛选操作,或者双击单元格并回车后,就会发现公式的返回结果变成了错误值#N/A。

03
如果你要将一个文件发送给别人,为了防止泄密,一定要将公式转换成值。
公式转换成值的两种方法:
① 我们可以选择公式所在的单元格区域,复制并选择性粘贴为值。
② 也可以点击“数据”选项卡中的“编辑链接”,选中数据源文件,点击“断开连接”即可。

04
为了测试这是不是新版Excel的特性,我做了两个虚拟机,分别安装了Office 2007和Office 2010。
经过测试,在Excel 2007中,即使取消勾选“保存外部连接数据”,使用Vlookup公式后,依然会将数据源文件中的数据打包到Vlookup公式所在的文件中。注意看,以下“我的文件”的大小并没有减少。

做筛选操作,公式依然可以返回结果,不会出现错误值。这实在是点奇怪。

而在Excel 2010中,这个选项是起作用的,跟最新版本一致。
其实不止是Vlookup,其他函数也会让Excel将外部链接中的数据保存下来。只要在公式中引用了数据源中的某些单元格区域,Excel就会将数据源中的数据保存下来,我们就可以通过等号公式获得数据源中的数据。所以大家养成良好的习惯,在向外发送文件前,及时取消公式链接,这样别人就无法获取数据源中的信息了,从而也保护了数据安全。
- End -