整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

办公小技巧:全部亮相 让Excel单元格完全显示文本

时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记数据,备注一栏的内容较多,如果使用常规的自动换行,表格美观度显然较差(图1)。现在我们可以有更好的方法实现文本显示,而且并不会影响表格的美观度。

图1 自动换行设置导致表格不美观

借力VBA自动滚动显示

上述示例中的备注栏文本显示,我们可以借助VBA将其设置为滚动显示,效果类似很多门店上的LED显示屏,这样文本在单元格中会自动滚动。

点击“开发工具→Visual Bisic”,在打开的VB设计窗口中点击“插入→模块”,接着到https://dwz.cn/iCjz8vx8(提取码: etmw)下载所需的代码文件,下载后将其中的代码粘贴到右侧的代码窗口中并保存(图2)。

图2 输入代码

这里代码的作用实际上是建立一个标签,利用VBA脚本调整单元格内文字的左右边距,当边距等于文字长度时重复循环,这样就可以实现文本左右自动滚动了。代码中默认文本在D1单元格中显示,大家可以根据自己的实际需要进行更改。

返回Excel窗口,取消D1单元格的自动换行显示,将其行距调整到和其他单元格一致。接下来点击“开发工具→宏”,就可以看到这里新增了两个宏,其中“滚动显示”是执行文本的左右滚动显示,另一个则是停止滚动(图3)。

图3 查看宏

为了方便操作,选中“滚动显示”,点击“选项”,为其设置一个快捷键Ctrl+W。同样选中另一个宏,为其设置快捷键Ctrl+S(图4)。

图4 设置快捷键

以后如果要滚动显示上述文本,我们只要按下Ctrl+W就可以让D1的文本自动滚动显示。为了加强显示效果,还可以将单元格的底色设置为黑色,将文本设置为白色,这样的效果就类似LED显示屏了(图5)。

图5显示效果

插入控件实现水平滚动显示

上述方法是使用VBA脚本实现的,操作比较复杂,对其实于新手还可以使用插入滚动条的方法手动显示文本数据。

定位到D1单元格,点击“开发工具→插入→ActiveX控件→文本框控件”,在D1单元格上插入一个文本框控件(图6)。

图6 插入控件

选中插入的控件,在文本框控件上点击右键选择“属性”,在打开的属性设置窗口中,将“MultiLine”(即是否开启文本框的自动换行)属性设置为“True”。继续更改“ScrollBars”属性为“2-fmScrollBarsVertical”,即纵向滚动条(图7)。

图7 更改属性

小提示:

如果将“scrollbars”的属性值设置为1,则为水平滚动条,我们可以根据自己的实际需要进行设置。

完成上述操作后返回Excel,将文本框的大小调整为和D1单元格大小一致,接着点击“设计模式”退出设计。现在在上述文本框中输入内容“备注:这里入住时间以户主在本小区登记为准”,就可以看到文本框中会自动出现上下滚动条,点击滚动条即可显示单元格中的所有内容了(图8)。

图8 文本框控件上下滚动显示

表头数据跨列居中显示

如果较多文本内容是表头数据,常规的方法是使用合并居中显示。由于合并单元格会给后续数据的统计和排序带来麻烦,所以对于这类表头数据其实可以借助跨列居中的方法来实现,这样既不用合并单元格,又可以完整显示表头的内容。

首先选中A1~E1单元格,右击选择“设置单元格格式”,接着切换到“对齐”标签,在水平对齐方式下选择“跨列居中”(图9)。

图9 设置单元格格式

返回Excel窗口,就可以看到原来在A1中的文本内容变为跨列居中显示了,这样不仅可以完整显示文本内容,而且由于没有合并单元格,对于后续的筛选、排序操作也不会有任何影响(图10)。

图10 跨列居中显示所有文本

创作者: 卢子 转自:Excel不加班

要生成30个日报表,估计你是一个个操作,移动复制重命名,改了大半天。有了VBA以后,就可瞬间生成,点一下按钮全搞定。

其实,实际工作中,很多东西都可以靠VBA生成的。VBA并不遥远,而是与你的工作息息相关。


你也不要把VBA想得太复杂,跟着卢子学习就行,其他别想。


还是老套路,用最原始的方法操作,先录制宏,再慢慢改代码完善。


Step 01 录制一个宏,将模板移动或复制,移至最后,勾选建立副本。

Step 02 点VB进入后台,再点模块,就可以看到刚刚录制的宏。


Sheets("模板").Select 选择模板这个工作表。


中间那句不用管,没啥意义。


Sheets("模板").Copy After:=Sheets(1) 将模板复制到第1个工作表后面。Copy复制,After之后,即使不会英语,你都可以大概猜出意思。


现在要实现的效果就是,每复制一次,都在最后工作表的后面创建一个新表。第1次就在表1后面,第2次就在表2后面,第3次就在表3后面。


前面学了循环语句,你可能想到通过i这个变量来实现,其实还有一个更智能的。Sheets.count就是计算工作表的个数。


现在语句就改成Sheets("模板").Copy After:=Sheets(Sheets.Count)。


生成新表的同时对该表进行命名,Sheets.Name就是工作表的名称,名称依次等于1日、2日、3日……此时通过For Next循环,让i变量随着循环次数变更来实现。

Sheets(Sheets.Count).Name = i & "日"


将刚刚说的内容综合起来代码就出来了。

还有一个小问题,就是在每个表的A2生成日期。

Sheets.Range代表某个表的单元格,日期前面部分是固定的为 "2020/6/" 再连接变量i就可以。

Sheets(Sheets.Count).Range("a2") = "2020/6/" & i


到此,完整的代码就出来了。

Sub rb()

Dim i As Integer

For i = 1 To 30

Sheets("模板").Select

Sheets("模板").Copy After:=Sheets(Sheets.Count)

Sheets(Sheets.Count).Name = i & "日"

Sheets(Sheets.Count).Range("a2") = "2020/6/" & i

Next

End Sub

查 发自 凹非寺

量子位 报道 | 公众号 QbitAI

编程不是人人都会,但Excel电子表格就是当代白领的必备技能啊!如果用Excel实现图像生成,那岂不是。。。

最近还真有人发明了一种SpaceSheet工具,它就是简单的电子表格界面,即使你完全不会编写代码,也能借助它理解生成对抗网络(GAN)是如何制造图像的。



作者把它设计成了一个网页Demo,供用户直接访问:

https://vusd.github.io/spacesheet/

到底怎么玩?

SpaceSheet应用程序由两部分组成:

左侧是数据选择器,右侧是电子表格界面

以生成面部图像为例。在右侧的表格个中选中某个位置,再点击点击左侧的元素来选择人脸。



通过电子表格顶的按钮,可以对填入的人脸进行以下一系列操作。

面部特征的连续变化

通过线性插值(Linear interpolation,LERP),可以按一个值到另一个值的的“距离”,等间距地插入一些图片。

顶部操作栏中的LERP按钮使可以在电子表格中的选定单元格之间进行线性插值。

通过线性插值的方法,产生两张人脸之间的平滑过渡图像,可以帮助我们理解面部特征的连续过程:



它不仅支持一维插值,还只支持二维插值。指定四个顶点,可以形成一个插值的“矩阵”,展示4张面部图片之间的连续变化:



另外,除了在两个面部图像的“中点”插值,还能通过滑动条(SLIDER)调节偏移的量。



如果说前面的线性插值是离散的,那么滑动条就给我们提供了一种连续变化的图像。它与两张已知图像之间“差异”是人为可控的。

提取“金发”属性

这套应用程序还可以分离出人脸中的“属性向量”(Attribute Vectors),

何谓属性向量?以人的面部特征为例。

首先,选择一个黑发的人脸,再选择一个金发的人脸。对二者求差(MINUS),这个差值就是“金发”特征,于是我们获得了一个金发的属性向量



获得了这个属性向量后,我们就可以通过求和操作(SUM)给任何人加上金发了:



同样的,我们也可以给人减去(MINUS)属性向量,获得一个黑发的面部图像:



其他基本操作

除了以上几项操作外,我们还能对面部图像求“距离”、求“乘积”等。

面部图像明明是一张图片,为何能做加减法、求距离呢?

这就不得不提潜在空间,每张面部图像都是在这个空间中的一个个向量,我们当然可以对这些向量做四则运算。运算的结果是这个空间中的另一个向量,我们可以把它解码成一张图片。



用表格理解网络模型空间

潜在变量

面部图像组成的潜在空间是由生成神经网络生成的。

生成神经网络是一类机器学习算法,从一组训练数据中学习,并构建广义模型。 然后我们可以对这些模型进行采样,以生成新数据样本,其结果则是基于我们的训练数据。

这是通过在比原始数据本身参数更少的参数集上训练神经网络来实现的。 这样做,模型学习到了更紧凑的训练数据表征。这些表征被称为潜在变量。

从潜在空间采样的潜在变量可以被解码成可观察的数据样本。

举个例子,如果我们要设计一个红酒杯,由两个维度可以进行放大操作,让它变得更宽,或者更高。变大就可以理解为一个潜在变量。



我们可以在这个空间中探索,但是遇到更复杂的图像,比如人脸怎么办呢?SpaceSheet能直观地帮助我们理解变量在潜在空间中的连续变化。



属性向量

通过减法,可以从潜在变量中分离出特定属性。 通过减法求得的差被称为属性向量,并且可以应用于其他潜在变量,转移它的属性。

例如,通过计算笑脸图像的平均矢量并减去没有笑容的脸部图像的平均矢量,在脸部的潜在空间中构建“微笑矢量”。

然后可以将该向量添加到潜在变量中或从潜在变量中减去该向量以使它们或多或少地“笑脸”。



尽管提取属性向量被证明是有效的,但是它还会受到其他“相关属性”的影响,说明属性之间存在着强相关性。

例如,从上图中我们可以发现,“微笑矢量”的应用导致为人脸添加更多女性属性(女性更爱微笑?)。

SpaceSheet就是让用户在这个空间中执行计算,在电子表格里实时显示,使用户能够立即观察到操作结果并采取相应措施。

利用这套功能强大的电子表格界面,能够帮助设计者在潜在空间内进行设计实验。即使非专业人士也能简单上手。

对于面部图像这样更复杂的空间,SpaceSheet还有一些“高级玩法”更有助于我们理解生成网络的工作过程。

推理

在线性插值是在两个变量之间插入一个变量。如果在两个变量之外,按照线性的方式外推,我们就能够推理出面部图片演化的方向。



以上表格图像中,左上、右上、左下三张人脸图像都是从左侧数据库中选取,在选中它们后选择“LERP”,就可以得出右下角人脸图像。这张图是根据前3张图推理得出的。

创建可调节人脸

用户还能根据已有图像,创建一个可调节图像,它与已知图像的“差异”是认为可控的。



如上图,MOD单元格中有一个“控制杆”,使用户能够围绕给定的潜在变量进行调整,以获得类似的潜在变量。

二者的差异程度可以通过控制杆与单元格中心的角度和距离来控制,想怎么变就怎么变。

更多数据集

除了字体和人脸之外,网站上还提供颜色Word2VecMNIST手写数据集供选择。

研究生导师网络

SpaceSheet的实现离不开作者自创的“神经网络”——研究生导师网络



作者的神经网络——“研究生导师网络”

Tom White新西兰惠灵顿大学设计学院的一名高级讲师, 他目前的研究重点是神经网络与设计师合作的创造潜力。

这套工具是由他和他的研究生Bryan Loh组成的“神经网络”共同完成的:

把随机idea输入给“生成器”研究生,然后把研究生的idea结果输入给“判别器”导师,再确定研究成果是否可以发表。

传送门

项目地址:

https://vusd.github.io/spacesheet/

GitLab地址:

https://gitlab.com/bryanlohjy/spacesheets-mdi-eval

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态