百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

心中无码便是高清,马赛克算法 PULSE详解

yund56 2025-03-02 19:34 10 浏览

作者:Jack Cui

转发链接:
https://mp.weixin.qq.com/s/T5LHHHgxwwZLn7RI3u3T3Q

前言

万恶的马赛克,是阻碍人类进步的绊脚石。

马赛克“脑补”算法 PULSE,助你图片模糊高清



这是杜克大学近期的一项研究,将模糊人脸秒变高清。



PULSE 算法目前只支持人脸的马赛克“去除”,因为训练数据都是人脸。

也就是说,“脑补”其它物体马赛克下的内容也是可以的,只要你有数据!

我知道,你一定又有了一些大胆的想法

「 Just do it 」 !


今天,继续手把手教学

算法原理、环境搭建、效果测试,一条龙服务,尽在下文!

2 算法原理

PULSE 算法可以在几秒内,将 16x16 像素的低分辨率(Low Resolution,以下简称 LR)小图,放大 64 倍,变成 1024 x 1024 像素的高分辨率(High Resolution,以下简称 HR)图像。

PULSE 算法会「脑补」出 LR 图像一些不存在的特征,补充细节,例如纹理、毛孔、毛发等:



左图为原始 LR 图片,右图为 PULSE 算法生成的 HR 图片。

PULSE 算法的思路是,拿到一张 LR 图片,使用 stylegan 生成 HR 图片,再将 HR 图片 downscale 得到的 LR 图片与原始 LR 图片对比,一直迭代收敛,找到最接近的那张。如下图所示:



原始 LR 图片和 PULSE 修复后再 donwscale 的 LR 图片对,使两者最接近的 HR 图片,就是修复得到的 HR 图片。

该算法在著名的高分辨率人脸数据集 CelebA HQ 上进行了效果评估,用 64×,32× 和 8× 的比例因子,采用不同的算法,进行了对比实验。

实验表明,PULSE 算法的效果最佳,得分几乎与真实的高质量照片一样高



通过上图,可以清晰地看到,PULSE 算法在人脸不同位置的纹理细节。

不过 PULSE 算法也有一定的局限性,它无法将失焦、不能识别的人脸照片,变成照片真人的清晰图像,它仅会生成不存在但看上去很真实的新面孔

说白了,PULSE 生成的高清图片,是「脑补」出来的,与真实的人脸照片可能存在差别。

3 环境搭建

PULSE 算法采用 Pytorch 实现,使用了 dlib 人脸库的一些 API。

项目地址:
https://github.com/adamian98/pulse

环境搭建不复杂,工程里的 pulse.yml 文件,已经写明了依赖环境。

name: pulse
channels:
  - pytorch
  - defaults
dependencies:
  - blas=1.0=mkl
  - ca-certificates=2020.1.1=0
  - certifi=2020.4.5.1=py38_0
  - cffi=1.14.0=py38hc512035_1
  - chardet=3.0.4=py38_1003
  - cryptography=2.9.2=py38ha12b0ac_0
  - cycler=0.10.0=py38_0
  - freetype=2.9.1=hb4e5f40_0
  - idna=2.9=py_1
  - intel-openmp=2019.4=233
  - jpeg=9b=he5867d9_2
  - kiwisolver=1.2.0=py38h04f5b5a_0
  - libcxx=10.0.0=1
  - libedit=3.1.20181209=hb402a30_0
  - libffi=3.3=h0a44026_1
  - libgfortran=3.0.1=h93005f0_2
  - libpng=1.6.37=ha441bb4_0
  - libtiff=4.1.0=hcb84e12_0
  - matplotlib=3.1.3=py38_0
  - matplotlib-base=3.1.3=py38h9aa3819_0
  - mkl=2019.4=233
  - mkl-service=2.3.0=py38hfbe908c_0
  - mkl_fft=1.0.15=py38h5e564d8_0
  - mkl_random=1.1.0=py38h6440ff4_0
  - ncurses=6.2=h0a44026_1
  - ninja=1.9.0=py38h04f5b5a_0
  - numpy=1.18.1=py38h7241aed_0
  - numpy-base=1.18.1=py38h6575580_1
  - olefile=0.46=py_0
  - openssl=1.1.1g=h1de35cc_0
  - pandas=1.0.3=py38h6c726b0_0
  - pillow=7.1.2=py38h4655f20_0
  - pip=20.0.2=py38_3
  - pycparser=2.20=py_0
  - pyopenssl=19.1.0=py38_0
  - pyparsing=2.4.7=py_0
  - pysocks=1.7.1=py38_0
  - python=3.8.2=hf48f09d_13
  - python-dateutil=2.8.1=py_0
  - pytorch=1.5.0=py3.8_0
  - pytz=2020.1=py_0
  - readline=8.0=h1de35cc_0
  - requests=2.23.0=py38_0
  - scipy=1.4.1=py38h44e99c9_0
  - setuptools=46.2.0=py38_0
  - six=1.14.0=py38_0
  - sqlite=3.31.1=h5c1f38d_1
  - tk=8.6.8=ha441bb4_0
  - torchvision=0.6.0=py38_cpu
  - tornado=6.0.4=py38h1de35cc_1
  - urllib3=1.25.8=py38_0
  - wheel=0.34.2=py38_0
  - xz=5.2.5=h1de35cc_0
  - zlib=1.2.11=h1de35cc_3
  - zstd=1.3.7=h5bba6e5_0
  - pip:
    - dlib==19.19.0
prefix: /path/to/your/anaconda3/envs/pulse

直接使用 pulse.yml 文件,用 Anaconda 进行环境配置。

修改 pulse.yml 文件中 prefix 的路径为你的 Anaconda 路径,然后使用指令创建环境:

conda create -f pulse.yml

这是官方推荐的方法。亲测,依然遇到了一些依赖问题。

最后一个一个依赖包安装才解决,所以我建议是使用 Anaconda 通过第三方库的包名安装,不用管版本啥的,例如:

conda install ca-certificates requests

libcxx、libedit 等这类的 lib 库不用安装,Anaconda 在创建 Python 环境的时候已经安装好了。

这里面稍微难安装的就是 dlib,dlib 需要使用 cmake 进行编译,所以需要先安装好 cmake,这里使用 pip 安装即可:

python -m pip install cmake dlib

都搞定了,环境就算搭建完成了。

4 效果测试

PULSE 项目地址:
https://github.com/adamian98/pulse

下载项目到本地:

git clone https://github.com/adamian98/pulse

项目提供了 pretrained model ,模型放在了 Google Drive ,不能翻墙的无法下载。

所以我将模型下载好,上传到了我的百度网盘。

下载地址(提取码:3gpq):

https://pan.baidu.com/s/13NZ8RY8KSogY78xh3gpcJA

在工程目录,创建 cache、realpics 两个文件夹,将下载好的三个文件放到 cache 文件夹内。

然后将下图放到 realpics 文件夹内,我们以此图为例,进行测试。


图片下载地址:

https://cuijiahua.com/wp-content/uploads/2020/07/dl-21-6.jpg

首先,我们使用 align_face.py 对图片 downscale。

python align_face.py


程序使用 dlib 检测人脸框,并对检测到的人脸进行降低分辨率处理,默认降低为 32x32 分辨率的图片。

生成的图片会放到 input 文件夹内,如果将图片放大到 1024x1024,就是相当于一张布满马赛克的图片。



有了这张 LR 图片,也就是低分辨率图片,使用 PULSE 算法,看下「脑补」效果吧!

python run.py -steps=2000

运行 run.py ,迭代 2000 steps,在 runs 文件夹下就会生成“去除”马赛克后的「脑补」图。


「脑补」图跟原图还是有些神似的!

5 争议

我们都知道,今年 5 月 25 日美国的「跪杀黑人」事件。


由此引发了美国有史以来,最大规模的游行抗议。


6 月份,吃“美国瓜”的人应该不在少数,比如我就在 YouTube 上吃了一个月的瓜。

每个国家都有自己的敏感话题

而美国,现在的敏感话题就是「种族歧视」。

PULSE 算法惹了大麻烦。

PULSE 采用 CelebA-HQ 训练的模型,数据集都是白人,因此算法「脑补」出的也都是白人脸

这在如今高喊「黑命贵」的美国,无疑是一股扎眼的“逆流”。

有网友就拿奥巴马的低分辨率照片进行测试,结果生成的都是白人男性,更加坐实了 PULSE 算法的「种族歧视」罪名。



PULSE 算法,以及相关的研究人员,因此被打上了「种族偏见」的标签。

甚至深度学习领军人物 LeCun 因为替 PULSE 说话,也不幸躺枪。

我倒是在想,以后美国科研的数据集是不是也得像美国电影一样,一部剧必须得有黑人演员才行,否则就算「政治不正确」。

扛着「政治正确」大旗的人们“口诛笔伐”异己,欲加之罪,何患无辞。

技术,有罪吗?

6 最后

  • PULSE 算法对于非数据集的数据,「脑补」效果一般。
  • 想用 PULSE 算法,“去除”人脸以外的马赛克图,需要建立数据集,重新训练模型。

推荐JavaScript学习相关文章

细品原生JS从初级到高级知识点汇总(一)

细品原生JS从初级到高级知识点汇总(二)

细品原生JS从初级到高级知识点汇总(三)

细品原生JS从初级到高级知识点汇总(四)

学习 jQuery 源码整体架构,打造属于自己的 js 类库

细说RTSP实现前端直播流探索记「干货」

一文带你搞懂前端登陆设计

使用 Node.js 将图片中的苹果变成橘子「实践」

基于Canvas实现的高斯模糊(上)「JS篇」

基于Canvas实现的高斯模糊(下)「JS篇」

由浅入深,66条JavaScript面试知识点(一)

由浅入深,66条JavaScript面试知识点(二)

由浅入深,66条JavaScript面试知识点(三)

由浅入深,66条JavaScript面试知识点(四)

由浅入深,66条JavaScript面试知识点(五)

由浅入深,66条JavaScript面试知识点(六)

由浅入深,66条JavaScript面试知识点(七)

为什么 setTimeout 有最小时延 4ms ?

如何处理 Node.js 中出现的未捕获异常?

Angular v10.0.0 正式发布,不再支持 IE9/10

基于 Docker 的 SSR 持续开发集成环境实践

细聊图解webpack 指南手册

一文带你彻底搞懂 NPM 知识点「进阶篇」

细聊webpack性能优化面面观

JS实现各种日期操作方法汇总

「实践」细聊前端性能优化总结

「实践」浏览器中的画中画(Picture-in-Picture)模式及其 API

「多图」一文带你彻底搞懂 Web Workers (上)

「多图」一文带你彻底搞懂 Web Workers (中)

深入细聊前端下载总结「干货」

细品西瓜播放器功能分析(上)「实践」

细品西瓜播放器功能分析(下)「实践」

细聊50道JavaScript基础面试题「附答案」

webpack4主流程源码解说以及动手实现一个简单的webpack(上)

webpack4主流程源码解说以及动手实现一个简单的webpack(下)

细聊前端架构师的视野

细聊应用场景再谈防抖和节流「进阶篇」

前端埋点统一接入方案实践

细聊微内核架构在前端的应用「干货」

一种高性能的Tree组件实现方案「干货」

进击的JAMStack

前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)上

前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)中

前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)下

一文带你搞懂 babel-plugin-import 插件(上)「源码解析」

一文带你搞懂 babel-plugin-import 插件(下)「源码解析」

JavaScript常用API合集汇总「值得收藏」

推荐10个常用的图片处理小帮手(上)「值得收藏」

推荐10个常用的图片处理小帮手(下)「值得收藏」

JavaScript 中ES6代理的实际用例

12 个实用的前端开发技巧总结

一文带你搞懂搭建企业级的 npm 私有仓库

教你如何使用内联框架元素 IFrames 的沙箱属性提高安全性?

细说前端开发UI公共组件的新认识「实践」

细说DOM API中append和appendChild的三个不同点

细品淘系大佬讲前端新人如何上王者「干货」

一文带你彻底解决背景跟随弹窗滚动问题「干货」

推荐常用的5款代码比较工具「值得收藏」

Node.js实现将文字与图片合成技巧

爱奇艺云剪辑Web端的技术实现

我再也不敢说我会写前端 Button组件「实践」

NodeX Component - 滴滴集团 Node.js 生态组件体系「实践」

Node Buffers 完整指南

推荐18个webpack精美插件「干货」

前端开发需要了解常用7种JavaScript设计模式

浅谈浏览器架构、单线程js、事件循环、消息队列、宏任务和微任务

了不起的 Webpack HMR 学习指南(上)「含源码讲解」

了不起的 Webpack HMR 学习指南(下)「含源码讲解」

10个打开了我新世界大门的 WebAPI(上)「实践」

10个打开了我新世界大门的 WebAPI(中)「实践」

10个打开了我新世界大门的 WebAPI(下)「实践」

「图文」ESLint 在中大型团队的应用实践

Deno是代码的浏览器,你认同吗?

前端存储除了 localStorage 还有啥?

Javascript 多线程编程?的前世今生

微前端方案 qiankun(实践及总结)

「图文」V8 垃圾回收原来这么简单?

Webpack 5模块联邦引发微前端的革命?

基于 Web 端的人脸识别身份验证「实践」

「前端进阶」高性能渲染十万条数据(时间分片)

「前端进阶」高性能渲染十万条数据(虚拟列表)

图解 Promise 实现原理(一):基础实现

图解 Promise 实现原理(二):Promise 链式调用

图解 Promise 实现原理(三):Promise 原型方法实现

图解 Promise 实现原理(四):Promise 静态方法实现

实践教你从零构建前端 Lint 工作流「干货」

高性能多级多选级联组件开发「JS篇」

深入浅出讲解Node.js CLI 工具最佳实战

延迟加载图像以提高Web网站性能的五种方法「实践」

比较 JavaScript 对象的四种方式「实践」

使用Service Worker让你的 Web 应用如虎添翼(上)「干货」

使用Service Worker让你的 Web 应用如虎添翼(中)「干货」

使用Service Worker让你的 Web 应用如虎添翼(下)「干货」

前端如何一次性处理10万条数据「进阶篇」

推荐三款正则可视化工具「JS篇」

如何让用户选择是否离开当前页面?「JS篇」

JavaScript开发人员更喜欢Deno的五大原因

仅用18行JavaScript实现一个倒数计时器

图文细说JavaScript 的运行机制

一个轻量级 JavaScript 全文搜索库,轻松实现站内离线搜索

推荐Web程序员常用的15个源代码编辑器

10个实用的JS技巧「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(一)「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(二)「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(三)「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(四)「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」

细品269个JavaScript小函数,让你少加班熬夜(六)「值得收藏」

深入JavaScript教你内存泄漏如何防范

手把手教你7个有趣的JavaScript 项目-上「附源码」

手把手教你7个有趣的JavaScript 项目-下「附源码」

JavaScript 使用 mediaDevices API 访问摄像头自拍

手把手教你前端代码如何做错误上报「JS篇」

一文让你彻底搞懂移动前端和Web 前端区别在哪里

63个JavaScript 正则大礼包「值得收藏」

提高你的 JavaScript 技能10 个问答题

JavaScript图表库的5个首选

一文彻底搞懂JavaScript 中Object.freeze与Object.seal的用法

可视化的 JS:动态图演示 - 事件循环 Event Loop的过程

教你如何用动态规划和贪心算法实现前端瀑布流布局「实践」

可视化的 js:动态图演示 Promises & Async/Await 的过程

原生JS封装拖动验证滑块你会吗?「实践」

如何实现高性能的在线 PDF 预览

细说使用字体库加密数据-仿58同城

Node.js要完了吗?

Pug 3.0.0正式发布,不再支持 Node.js 6/8

纯JS手写轮播图(代码逻辑清晰,通俗易懂)

JavaScript 20 年 中文版之创立标准

值得收藏的前端常用60余种工具方法「JS篇」

箭头函数和常规函数之间的 5 个区别

通过发布/订阅的设计模式搞懂 Node.js 核心模块 Events

「前端篇」不再为正则烦恼

「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能

深入细品浏览器原理「流程图」

JavaScript 已进入第三个时代,未来将何去何从?

前端上传前预览文件 image、text、json、video、audio「实践」

深入细品 EventLoop 和浏览器渲染、帧动画、空闲回调的关系

推荐13个有用的JavaScript数组技巧「值得收藏」

前端必备基础知识:window.location 详解

不要再依赖CommonJS了

犀牛书作者:最该忘记的JavaScript特性

36个工作中常用的JavaScript函数片段「值得收藏」

Node + H5 实现大文件分片上传、断点续传

一文了解文件上传全过程(1.8w字深度解析)「前端进阶必备」

【实践总结】关于小程序挣脱枷锁实现批量上传

手把手教你前端的各种文件上传攻略和大文件断点续传

字节跳动面试官:请你实现一个大文件上传和断点续传

谈谈前端关于文件上传下载那些事【实践】

手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件

最全的 JavaScript 模块化方案和工具

「前端进阶」JS中的内存管理

JavaScript正则深入以及10个非常有意思的正则实战

前端面试者经常忽视的一道JavaScript 面试题

一行JS代码实现一个简单的模板字符串替换「实践」

JS代码是如何被压缩的「前端高级进阶」

前端开发规范:命名规范、html规范、css规范、js规范

【规范篇】前端团队代码规范最佳实践

100个原生JavaScript代码片段知识点详细汇总【实践】

关于前端174道 JavaScript知识点汇总(一)

关于前端174道 JavaScript知识点汇总(二)

关于前端174道 JavaScript知识点汇总(三)

几个非常有意思的javascript知识点总结【实践】

都2020年了,你还不会JavaScript 装饰器?

JavaScript实现图片合成下载

70个JavaScript知识点详细总结(上)【实践】

70个JavaScript知识点详细总结(下)【实践】

开源了一个 JavaScript 版敏感词过滤库

送你 43 道 JavaScript 面试题

3个很棒的小众JavaScript库,你值得拥有

手把手教你深入巩固JavaScript知识体系【思维导图】

推荐7个很棒的JavaScript产品步骤引导库

Echa哥教你彻底弄懂 JavaScript 执行机制

一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧

深入解析高频项目中运用到的知识点汇总【JS篇】

JavaScript 工具函数大全【新】

从JavaScript中看设计模式(总结)

身份证号码的正则表达式及验证详解(JavaScript,Regex)

浏览器中实现JavaScript计时器的4种创新方式

Three.js 动效方案

手把手教你常用的59个JS类方法

127个常用的JS代码片段,每段代码花30秒就能看懂-【上】

深入浅出讲解 js 深拷贝 vs 浅拷贝

手把手教你JS开发H5游戏【消灭星星】

深入浅出讲解JS中this/apply/call/bind巧妙用法【实践】

手把手教你全方位解读JS中this真正含义【实践】

书到用时方恨少,一大波JS开发工具函数来了

干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)

手把手教你JS 异步编程六种方案【实践】

让你减少加班的15条高效JS技巧知识点汇总【实践】

手把手教你JS开发H5游戏【黄金矿工】

手把手教你JS实现监控浏览器上下左右滚动

JS 经典实例知识点整理汇总【实践】

2.6万字JS干货分享,带你领略前端魅力【基础篇】

2.6万字JS干货分享,带你领略前端魅力【实践篇】

简单几步让你的 JS 写得更漂亮

恭喜你获得治疗JS this的详细药方

谈谈前端关于文件上传下载那些事【实践】

面试中教你绕过关于 JavaScript 作用域的 5 个坑

Jquery插件(常用的插件库)

【JS】如何防止重复发送ajax请求

JavaScript+Canvas实现自定义画板

Continuation 在 JS 中的应用「前端篇」

作者:Jack Cui

转发链接:
https://mp.weixin.qq.com/s/T5LHHHgxwwZLn7RI3u3T3Q

相关推荐

一对多查询,Vlookup公式组合Countifs,详细解读!

我们模拟工作中的使用场景,只保留了关键的两列数据需要根据部门条件,把所有的员工信息给匹配出来首先,当存在多个结果值时,我们去查找的时候,只会返回第一个出现的值:=VLOOKUP(D2,A:B,2,0)...

自动获取vlookup函数的第三参数,再也不用一列一列的数了

对于vlookup函数,很多人都有会这样的想法:vlookup函数的第三参数为什么就不能自动的获取到呢,还需要一个一个的数太烦人了。有没有什么方法能自动的获取vlookup函数的第三参数呢?当然有了,...

VLOOKUP函数比对一般用法

格式"=VLOOKUP(要查谁,在哪查,返还值为查询范围的第几列,精确还是近似)"。中间用逗号隔开。如:A列为全部人员姓名,B列为对应全部身份证号码,C列为部分人员姓名(有在A列里的,...

VLOOKUP的这些坑,你都知道吗?

VLOOKUP的这些坑,你都知道吗?VLOOKUP是大家常用的查找引用函数,很多人正式学习Excel都是从这个函数开始的,但有的时候VLOOKUP却不太听话,公式返回错误结果,让人苦不堪言。有时明明数...

重塑Excel体验:VLOOKUP与公式联动,轻松实现多列信息一键匹配!

真心羡慕啊!每次我都要慢悠悠地一个个用VLOOKUP去找数据,跟蜗牛爬似的慢,还容易出错,可你看看人家同事,手一挥,几十秒就搞定了,那叫一个利索!步骤一:输入VLOOKUP函数并设置查找值在需要输入公...

巧用Vlookup函数揪出“第三者”

在一张Excel表格的重复记录中,让你快速列出每种不同物品第2次或第n次出现的记录,你会怎么做?Vlookup函数就有这个本事。举例来说,产品或者物流表格中往往会记录有同一货物的多笔数据(如下图的今日...

一次匹配多个值,Vlookup、Xlookup、Filter公式,你用哪个

举个工作实例,左边是员工信息表数据需要根据编号,把后面所有的信息一次性的匹配出来工作中,经常遇到这种问题,有3个公式,可以快速的解决,分别是VLOOKUP公式,XLOOKUP公式,Filter公式1、...

Excel实例:VLOOKUP与XLOOKUP双条件精确查找、模糊查找

咱们今天通过实例聊聊VLOOKUP和XLOOKUP,看看它们在精确和模糊查找上有什么不同。我们假设有一个数据表,这个表里有地区、品类以及对应的金额。根据大区和品类这两个条件,来查找并匹配出相应的金额数...

带超链接的Vlookup公式查找匹配,你会么

举个例子,左边有源数据,现在我们需要根据部分员工数据,查找匹配工资,并且带一个超链接,当我们点击工资数据时,自动跳转到原数据位置1、查找结果正常我们想查找匹配出结果,用vlookup公式,或xlook...

Vlookup公式查找出错,原表明明有数据

Vlookup公式天天用,但是经常出错,还找不出原因,今天分享3步检查曲,举个工作中的例子:左边是工资表,需要查找匹配部分员工的工资数据1、公式引用出错我们使用VLOOKUP公式,查找匹配,输入的公式...

不用嵌套其它函数,VlOOKUP实现一对多查找

在处理日常工作时,我们常会遇到一份详细的花名册,其中记录了众多人员的多项信息。然而,当需要从这份名单中快速提取特定人员的相关资料时,一个常见的问题是:目标信息与花名册中的列顺序并不一致。如图所示:面对...

VLOOKUP函数开挂用法:多表多文件多区域查找大揭秘

在日常办公中,Excel堪称我们的得力助手,而VLOOKUP函数更是其中的明星,被大家广泛运用,堪称“数据查找神器”。说起VLOOKUP函数,相信大家都不陌生。最常见的用法,就是在一个表...

按需填充 根据指定数字填充重复数据

由于公司启用了新标签,现在需要根据盘点产品数重新打印指定数量的标签。比如冰箱4台,洗衣机2台,那么就要在D2:D5数据区域复制4个重复的冰箱品名、2个重复的洗衣机品名,以此类推(图1)。手动复制容易出...

那些可以替代VLOOKUP的函数们!

大家好,今天我们来讲讲那些和VLOOKUP功能一样的函数们,但是却没有VLOOKUP函数那么有名气,所有总是嫉妒VLOOKUP函数。VLOOKUP函数大家肯定都很熟悉了。VLOOKUP函数是一个查询类...

VLOOKUP跨表查找,你会吗?

VLOOKUP跨表查找,你会吗?VLOOKUP函数是大家最常用的查找引用函数,我们在工作中经常用它按照条件查找对应的数据,但是当数据源分散在多张工作表中时,你知道怎么跨表查找吗?今天我通过一个Exce...