查看原文
其他

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

2017-01-17 效率火箭 效率火箭


上周有热心的小伙伴提问,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函数有三个参数,分别为:

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

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

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


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

Bingo!


VBA是不是在这个时候感觉特别的犀利,一下子就让你摆脱了18个函数的嵌套!
不过这个VBA只能对付原数据不出现重复的情况。
如果原数据有重复,比如,有两个 印度Joe,又怎么样才能在最终的结果中避免重复呢?
回复 查询 二字,火箭君将告诉你这个自定义函数该如何构建。


相关文章:

[Excel]不同颜色单元格该如何分别计数?

[Excel]当lookup遇上通配符

[Excel]数据再悬殊你也不怕,因为你的会截断图



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存