参考链接: 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
原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/245645.html