ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-18 14:00:20  阅读:257  来源: 互联网

标签:单元格 Excel 案例 点击 Sheets 表名 分表 思路 总表


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

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

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

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

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

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

=总表!B2

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

那我们怎么获取表名呢?

方法一:

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

=cell("filename")

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

方法二:

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

第一步:打开编辑器

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

第二步:插入模块

点击插入,模块。

第三步:

粘贴代码进去。

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启用宏的工作簿(*.xlsm)

第五步:执行代码

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

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

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

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

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

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

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

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

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

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

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

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

标签:单元格,Excel,案例,点击,Sheets,表名,分表,思路,总表
来源: https://www.cnblogs.com/lihanlin/p/16159347.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有