快好知 kuaihz订阅观点

 

Excel | VBA(6)——一对多查询,几行代码代...

一起来学office,提高办公技能

问题情境

Excel069 | VLOOKUP一对多查找:不连续相同内容对应的多个数据一次提取

Excel145 | INDEX+SMALL,一对多查找的又一犀利组合

以上两篇文章,朋友们熟悉吗?

经常读我公众文章的朋友一看就知道,那是两篇关于一对多查找 的文章。

两种方式,不管是VLOOKUP还是 INDEX+SMALL,都用到了构建新的数组,一是公式写起来比较麻烦,二是如果数据量过大,运行速度较慢。

今天,韩老师给几行代码,可以轻松解决以上问题。

VBA实现

代码如下(横屏幕查看,效果更好):

Sub xf()

    Dim i%, k%, irow%          "定义整形变量

    irow = Range("a1").CurrentRegion.Rows.Count   "irow为当前数据数据行数

    k = 4                     "因为查询数据从F4单元格开始显示,所以K赋初值4

    Range("f4", "i" & irow).Clear   "清除显示区域数值,以备显示下一次查询结果

    For i = 2 To irow

        If Range("b" & i).Value = Range("g1").Value Then

            Range("f" & k) = k - 3

            Range("g" & k).Value = Range("b" & i).Value

            Range("h" & k).Value = Range("c" & i).Value

            Range("i" & k).Value = Range("d" & i).Value

            k = k + 1

        End If

     Next

End Sub

当然,如果数据较多,也可使用定义数组的方法。

如下图(横屏幕查看,效果更好):

结果如下:

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

如有帮助,请点亮“在看”哦

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:一对  一对词条  代码  代码词条  查询  查询词条  Excel  Excel词条  VBA  VBA词条  
办公

 word数据提取技巧:如何批量提...

编按:曾经老板给了我一份职员信息资料,其中包含有许多身份证号,让我从中提取它们的出生年月日,但我却不知道如何快速实现。此后经过多翻摸索,才终于总结出2个Word...(展开)

办公

 Excel中检测输入的身份证号码...

什么时候需要校验身份证号码合法性呢?1.防止输入人员随手输入一个18位数字冒充身份证号码2.防止输入手误,有时候并非故意输错注意本方法无法检测身份证是否真实存在...(展开)