有时遇到问题,觉得很难解决,其实换个思路,利用下辅助列,或许问题就迎刃而解了。看看这位同学遇到的问题:
![b9a0c0dd5e32fed6fa0151cdda97c699.gif](https://i-blog.csdnimg.cn/blog_migrate/1f1b0a28ee5640d722f36031b2e203fb.gif)
左面为要打印的文件,右边为打印表中见证取样记录和见证送样记录的数据源。他要打印很多份这样的报告,每份报告中取样和送样记录对应数据源中的一条记录,是否每个取样和送样记录都要手工输入呢?如果有一百份,甚至更多,那这个工作也做的够烦人!
可是利用公式来解决的话,首先大家想到的就是要输入的每个取样记录和送样记录都分别的在不同的打印表中,不挨在一起,又有合并单元格和每个打印表之间的空行,无法筛选黄色区域,怎么办呢?
大家可以先别看下面的内容,自己思考下怎么解决:
我的办法:
01第一种
第一步
首先在E列做个辅助列,凡是不需要填写结果的单元格对应的E列单元格都为0,凡是需要填写结果的单元格对应的E列单元格按照顺序编号(后面大家就会知道为什么要编序号)。
编序号的公式:
=IF(C1="见证送样记录",1+MAX(E$1:E1),0)
![210195fb09db761d0b81aa27bd55315d.gif](https://i-blog.csdnimg.cn/blog_migrate/a450dff18cd66ae3a123e242d6b08626.gif)
第二步
筛选E列不为0的数据,这样需要输入结果的单元格就全部被筛选出来了。然后在A9中输入公式。
=INDIRECT("R"&(E9+2)&"C"&7,0)
这里大家就明白了为啥我要编序号了吧,就是为了这里引用的方便,序号直接加2就是需要引用的单元格的行序号。indirect函数获取单元格的值上节我们刚讲过。
![cead411928d43186ed53be81fd2d9101.gif](https://i-blog.csdnimg.cn/blog_migrate/1da8c4f820008c1458067b076c7bb6ec.gif)
这时我们一个困难就是C9中输入公式,想填充到其他单元格时因为有合并单元格,所以无法选择一列。
第三步
我们需要取消合并单元格,然后改成跨列居中,效果和合并单元格是一样的,但是却可以省去很多计算时的麻烦。
![93a730b60628b3bab0eb2f261aaa55f8.gif](https://i-blog.csdnimg.cn/blog_migrate/c0cf51c6f0cfeb0831d45928b59d6b37.gif)
怎么样,经过这三步就可以实现这位同学的目的了吧!做起来其实挺快的。
02第二种
那有没有办法不用辅助列一步实现呢?只有你想不到的,没有你做不到的,……
当然首先是你在制表时就要想到别用合并单元格,直接跨列居中,而且每张打印表中间空行要一致。
这些规范好后,筛选出你需要结果的单元格。
用indirect引用F列中对应的值,列号是固定的,只有行号变化,难点在于怎么把结果单元格和引用单元格的行号联系起来。
用心观察就会发现结果单元格的行号和引用单元格的行号有如下规律。
![d0b31182609d4a2c0912ef09622c2d4c.png](https://i-blog.csdnimg.cn/blog_migrate/0c2efb5ee92a5d687d7fefe37d1980aa.jpeg)
即结果单元格的行数除以3的余数加上3就是需要引用的单元格的行数。OK!接下来直接在筛选出来的第一个单元格中输入
=INDIRECT("R"&(MOD(ROW(),3)+3)&"C"&7,0)
选中需要填充的单元格,ALT+; 把鼠标在编辑栏公式上点下,CTRL+ENTER,即可。
转自:米宏Office