学以致用——Excel自定义函数查询列标(Find Column Number with custom function)

介绍一种通过自定义函数提升VLOOKUP查询效率的方法,适用于列顺序频繁变动的情况。利用VBA编写自定义函数findCN定位目标列,简化查询步骤。

--------------------------------------------------------------------------------------------------------------

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值