假设我得到了这样的积分索引:
工作表1
1
2
3
4
5
6
...
还有一个连接数据,表示这些点之间的关系,例如,前两行表示与和point_1
相连:point_75
point_78
表2
1 75
1 78
2 44
3 45
3 65
4 39
4 63
5 49
5 50
6 59
...
我希望我可以用一些表达式来表示这sheet1
一点:
1 75,78
2 44
3 45,65
...
有什么办法可以做到这一点?
答案1
首先在标准模块中输入以下用户定义函数:
Public Function Konnect(r1 As Range, r2 As Range) As String
Dim ary, i As Long
Dim v As Variant
ary = r2
v = r1.Value
Konnect = ""
For i = LBound(ary, 1) To UBound(ary, 1)
If ary(i, 1) = v Then Konnect = Konnect & "," & ary(i, 2)
Next i
If Len(Konnect) <> 0 Then Konnect = Mid(Konnect, 2)
End Function
然后在工作表1细胞B1进入:
=Konnect(A1,Sheet2!A$1:B$10)
并抄下来:
当然,你会改变10以匹配实际的表大小工作表2。
编辑#1:
用户定义函数 (UDF) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件另存为.xlsm而不是.xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要从 Excel 使用 UDF:
=Konnect(A1,Sheet2!A$1:B$10)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其工作!