[Excel]如何将多个查询结果置于一个单元格

作者: 效率火箭 | 来源:发表于2017-01-23 10:38 被阅读76次

    上周有热心的小伙伴提问,excel中怎么样才能便捷地将所有查询结果放置到一个单元格中?据说她费了九牛二虎之力,嵌套了18个函数,终于实现了她的诉求。那真的需要18个函数之多吗?

    问题回顾

    左边为一个两列的表格,分别是国家以及对应的人名。而这个小伙伴的问题则是怎么才能按照国家,将所有该国家的人名列到一个单元格内。

    问题解法

    这是一个一对多的查询,显然利用常规的lookup函数是很难解决这个问题。因此,火箭君建议使用VBA来实现此要求。

    VBA源代码在此:

    Function SingleCellExtract(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer) 

    Dim i As Long  

    Dim Result As String  

    For i = 1 To LookupRange.Columns(1).Cells.Count  

    If LookupRange.Cells(i, 1) = Lookupvalue 

    Then  

    Result = Result & " " & LookupRange.Cells(i, ColumnNumber) & ","  

    End If  

    Next i  

    SingleCellExtract = Left(Result, Len(Result) – 1)  End Function

    >>>分析下这个代码的构成:

    这是一个自定义的函数,它构建了一个类似lookup的函数,只不过它能够实现一对多的效果。

    这个SingleCellExtract函数有三个参数,分别为:

    Lookupvalue: 需要查询的值,比如,印度、中国等;

    LookupRange: 这个需要查询的值出现的区域;

    ColumnNumber: 找到这个查询值位置后的第N列为查询结果,在这个案例中为2

    看一看运行以后的结果呗!

    Bingo!

    VBA是不是在这个时候感觉特别的犀利,一下子就让你摆脱了18个函数的嵌套!

    不过这个VBA只能对付原数据不出现重复的情况。

    如果原数据有重复,比如,有两个印度Joe,又怎么样才能在最终的结果中避免重复呢?

    在我们的公众号中,回复查询二字,火箭君将告诉你这个自定义函数该如何构建。

    相关文章

      网友评论

        本文标题:[Excel]如何将多个查询结果置于一个单元格

        本文链接:https://www.haomeiwen.com/subject/dfrobttx.html