使用excel公式在包含两列的表中返回唯一值
我在搜索网络和堆栈溢出,但找不到它=( 我的床单看起来像:使用excel公式在包含两列的表中返回唯一值,excel,excel-formula,Excel,Excel Formula,我在搜索网络和堆栈溢出,但找不到它=( 我的床单看起来像: R1 U1 R1 U1 R1 U2 R1 U3 R2 U2 R2 U2 R2 U3 是否可以使用excel公式返回 R1 U1,U2, U3 R2 U2, U3 谢谢!据我所知,Excel中没有函数可以执行此操作。您需要的基本上是一个返回所有值而不是一个值的VLOOKUP 但是,可以编写VBA函数来执行此操作,类似于: Public Function FindSeries(TRange As Range, MatchW
R1 U1
R1 U1
R1 U2
R1 U3
R2 U2
R2 U2
R2 U3
是否可以使用excel公式返回
R1 U1,U2, U3
R2 U2, U3
谢谢!据我所知,Excel中没有函数可以执行此操作。您需要的基本上是一个返回所有值而不是一个值的
VLOOKUP
但是,可以编写VBA函数来执行此操作,类似于:
Public Function FindSeries(TRange As Range, MatchWith As String)
For Each cell In TRange
If cell.Value = MatchWith Then
x = x & cell.Offset(0, 1).Value & ", "
End If
Next cell
FindSeries = Left(x, (Len(x) - 2))
End Function
您可以在此处找到此代码和更多信息:透视表
假设您输入R1或R2的单元格是命名范围clVal。 如果上述数据在A1:B7范围内,请按如下所示在C1:C7中添加一个帮助器列:
C1: =IF($A$1=clVal,B1 & ", ","")
C2: =IF($A2=clVal,$C1&IF(ISERROR(FIND($B2,$C1)),B2&",",""),$C1)
copy this formula down to C7.
最后,我们需要切掉训练逗号(如果有)。
这可以通过
=LEFT(C7,LEN(C7)-1*(RIGHT(C7,1)=","))