今天我们来探讨一道关于批量制作小卡片的题目。
问题要求如图一
看了一下题目要求以及效果,简而言之:将14份数据填到样例模板。
由于不产生新的数据,相当于是一个引用数据的问题,脑海中出现了两个函数:INDEX,INDIRECT。
接下来也通过这两个函数来实现操作。
先在表一做成一个模板,如图二
不管是用INDEX函数,还是INDIRECT函数,有一个核心问题必须要得到解决:隔行填充如何与表2的连续数据匹配上?
问题解决思路
例如,B2单元格需要引用表2中C2单元格的文本,下拉填充后需要B6单元格引用到表2中C3单元格的文本,由于在下拉填充时都是相对于上面一个间隔4行,只要能够解决其中一个问题,那么就能够解决隔行填充的问题。
先以卡片填充3个来分析,此时部门项待填的值是B2、B6、B10。与表2原数据对应的单元格是C2、C3、C4,即
B2=表2!C2,B6=表2!C3,B10=表2!C4。
将数字2,6,10与2,3,4对应起来就需要解决
这里我们可以发现
序列一:2,6,10可以看作4n-2(n表示数字顺序,第1个、第2个...)
序列二:2,3,4可以看作n+1(n表示数字顺序,第1个、第2个...)
那么可以发现将序列一加上6,然后再除以4就可以匹配到序列2
(序列一+6)/4=序列二
所以隔行填充匹配问题得到解决,接下来用函数解决:
INDEX函数解决问题
部门、资产名称、卡片编号、保管人、资产编号、启用日期在表2的数据里面并不连续,则列数需要手动进行更改再向下填充。
以部门为例,函数为
=INDEX(表2!$A$1:$H$15,(ROW(B2)+6)/4,3)其他项只需要改变一下列号就可以。
为了更美观,避免出现错误值,可加上IFERROR函数
=IFERROR(INDEX(表2!$A$1:$H$15,(ROW(B2)+6)/4,3),"")下拉填充到出现空值即可,效果如图三
INDIRECT函数解决问题
核心隔行填充问题解决后,直接引用单元格,例如部门项的函数为
=INDIRECT("表2!""C"(ROW(B2)+6)/4)好的,问题解决。
如果有需要题目原件练习,回复。
转载请注明:http://www.0431gb208.com/sjszlfa/6097.html