从一个实际案例中学习解决Excel问题时的思路


参考链接: https://gewuweb.com/office365/3138.html

前几天我们讲过一个群友的问题,如下。

从一个实际案例中学习解决Excel问题时的思路

后来与他沟通后,他想要的效果是在总表中单位列里输入单位,分表中相应单元格就会自动出现单位名称。

我做了下简化,如下图所示,要求在总表中输入单位时,分表中自动出现单位。

从一个实际案例中学习解决Excel问题时的思路

分表少点的话,我们直接在分表中引用总表的数据就可以了,问题是他现在是1500张分表,在C2中输入一个单位,表1对应单元格就跳出刚输入的单位,在C3中输入一个单位,表2对应单元格就跳出刚输入的单位……,不可能每张表去输入公式。

如果我们同时选定这1500张表,在任一张表的B3位置输入公式

=总表!B2

若是每个分表B3中输入的公式中的B2能随着表名的变化而变化,例如,表1的B3中公式为=总表!B2,表2的B3中公式=总表!B3,那么这个问题自然就解决了。所以现在的难点就是怎么在每张表中固定位置获取到该表的表名,这个问题就可以解决了。

那我们怎么获取表名呢?

方法一:

考虑函数,用cell函数获取工作表路径,然后在从中提取表名。

=cell(“filename”)

从一个实际案例中学习解决Excel问题时的思路

大家可以看到,用这种办法,分表中得到的路径全部一样,只有分别到每张表中点击下编辑栏的公式,后面的表名才会改变,这样要点击很多很多次,没有任何意义了!

方法二:

利用VBA代码,不懂的同学只需要知道有这种办法可以实现,需要的时候来学习就可以了。

第一步:打开编辑器

从一个实际案例中学习解决Excel问题时的思路

点击开发工具下面的VB,打开编辑器

第二步:插入模块

从一个实际案例中学习解决Excel问题时的思路

点击插入,模块。

第三步:

从一个实际案例中学习解决Excel问题时的思路

粘贴代码进去。

Sub TQ()

For i = 2 To Sheets.Count

Sheets(i).Range(“b1”) = Sheets(i).Name

Next

End Sub

备注:Sub TQ(),TQ为自己定义的一个名字,即提取的意思。

For i = 2 To Sheets.Count,2是指从第2张表开始,从第几张开始,这里就写几。

Sheets(i).Range(“b1”) = Sheets(i).Name,这里的b1是指把结果放在B1单元格,大家根据需求自己指定。

第四步:保存

从一个实际案例中学习解决Excel问题时的思路

保存时会弹出如下提示,点击否,会弹出另存为对话框,选择保存类型为Excel启用宏的工作簿(*.xlsm)

第五步:执行代码

从一个实际案例中学习解决Excel问题时的思路

选择B1单元格,点击开发工具,宏,会弹出如下对话框

从一个实际案例中学习解决Excel问题时的思路

点击执行,下面是点击执行后的效果

从一个实际案例中学习解决Excel问题时的思路

每个分表的B1单元格就会出现各自的表名。

这下就爽了,这个问题就迎刃而解了。

从一个实际案例中学习解决Excel问题时的思路

选定除了总表以外的其他表,在B2中输入:

=INDIRECT(“总表!B”&(B1+1))

因表名和客户序号相差1,所以加1。

到这里,这个问题就完美解决了。

当然这种办法是我在不懂VBA的时候想到的,代码是向群友请教得来的,学习VBA之后这种问题就变的非常简单了!上面主要是给大家提供一种解决问题时的思路。

Excel真的很强大,条条大道通罗马,只要有思路,一切都好办!

每天进步一点,每天提升一点!

感谢每一位支持我的读者!!!
参考来源: https://gewuweb.com/sitemap.html

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/245645.html

(0)
上一篇 2022年4月18日
下一篇 2022年4月18日

相关推荐

发表回复

登录后才能评论