--------------------------------------------------------------------------------------------------------------
2018年6月14日凌晨更新:
今天在实际手动生成报表时,发现将包含自定义函数的vlookup公式自动填充时,速度变得非常慢(可能只有正常速度的1/20)。这显然不能忍。只好改变了一下使用方法,插入两行作为辅助行,分别用于查询当期列标(单元格包含公式)和存放往期列标(将上期的当期列标复制粘贴为value),然后,自动填充的公式中,仅需包含列标值即可,无需重复计算。问题解决!
---------------------------------------------------------------------------------------------------------------
需求:工作中需要在一个有300多列的主文件中查找15列左右的数据,但是这个主文件的列顺序经常变化。导致每次在使用VLOOKUP查询时,要先确认一下列标是否正确,如果不正确,要先修改列标。这个工作属于重复性工作,每次要花费10分钟左右。可以说我已经忍了很久了。最近两个礼拜VBA知识和经验又增长了一点,今天我趁热打铁,把这个工作也给自动化了吧。
方法:自定义一个Excel函数(findCN)
代码:
Function findCN(ByVal vlRange, ByVal columnName)
For Each cel In vlRange
If cel.Value = columnName Then
findCN = cel.Column
Exit For
End If
Next
End Function
其中,columnName为要查询的列名,vlRange为要查询的列名所在的表头区域。
应用示例:
=VLOOKUP(E3,vl_sv,findCN(vl_svHeads,"BUSINESS_CATEGORY")-2,FALSE)