聪明又机灵的同事给我出了个题目,如下
表1为银行流水,有三个字段:日期,单位名称,金额
表2为合同目录,有四个字段:合同编号,合同名称,单位名称,合同额;其中一个单位可以签订多份合同,
现在需要在表1中根据单位名称,找到有几份合同,然后以下拉菜单的形式选择出相应的合同编号。最终实现通过合同编号将表1和表2连起来,做进一步的数据分析。
通过摸索,VBA可实现了上述功能。
要点:
1、确定目标单位(所在行的第二列)
2、根据目标单位在sheet2中找出所有的合同编号,并存在数组中
3、将数组赋值到下拉列表中
4、完成。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim aa As String
Dim bb As Integer ' 合同目录最大行数
Dim cc As String ' 所选行的单位名称
Dim i As Integer
bb = Sheets(2).Range("A1").End(xlDown).Row
cc = Cells(Target.Row, 3)
If Target.Column = 7 Then
For i = 1 To bb
If Sheets(2).Cells(i, 3) = cc Then
aa = aa & Sheets(2).Cells(i, 1) & Sheets(2).Cells(i, 2) & ","<