当名称列相同时,我想从另一个Excel工作表上的一个Excel工作表中检索记录的一列数据(注册号)。
也就是说,在“会议”表上有
Matric Apellido Nombre Avión
12 Burrow Irving F15
42 Nelson Howard A10
18 Krings Jack F18
10 Mitaux-Maurouard Guy Rafale
在“ RECAP”工作表中,
Apellido Nombre ...
Nelson Howard ...
Burrow Irving ...
Mitaux-Maurouard Guy
Krings Jack ...
Y megustaría
Apellido Nombre ... Matric
Nelson Howard ... 42
Burrow Irving ... 12
Krings Jack ... 18
我尝试过:
Sub Test()
Dim i As Long
Dim arr As Variant
Dim Matriculas As New Scripting.Dictionary 'Need the Microsoft Scripting Runtime library in Tools-> References
'We store the sheet with everything in an array
With ThisWorkbook.Sheets("Convocation")
arr = .UsedRange.Value
End With
'We assume that the registration is in column A and surnames B and C
For i = 2 To UBound(arr)
If arr(i, 1) = vbNullString Then Exit For 'if we find empty values we leave the loop
If Not Matriculas.Exists(arr(i, 2) & arr(i, 3)) Then 'we check that the combo of surnames is not duplicated
Matriculas.Add arr(i, 2) & arr(i, 3), arr(i, 1) 'we keep in the dictionary the combo of surnames with their registration
Else 'If the person could have more than 1 license plate then:
Matriculas(arr(i, 2) & arr(i, 3)) = Matriculas(arr(i, 2) & arr(i, 3)) & ", " & arr(i, 1) 'we add the others separated by ","
End If
Next i
'We store the sheet with everything in an array
With ThisWorkbook.Sheets("RECAP")
arr = .UsedRange.Value
'We assume that the surnames are in columns A and B, and the registration in C
For i = 2 To UBound(arr)
If arr(i, 1) = vbNullString Then Exit For 'if we find empty values we leave the loop
arr(i, 3) = Matriculas(arr(i, 1) & arr(i, 2)) 'here we assign the registration stored in the dictionary according to surnames
Next i
.UsedRange.Value = arr 'we return the array to the sheet
End With
End Sub
但是,当我编译时出现以下错误:Sub或Function undefined。我已将代码包含在所有工作表的Microsoft Excel Objects
中,尤其是在ThisWorkbook
中。
我的问题不是第一行,而是Ubond
。当我摆脱它时,我不再有错误。但是它们是循环所必需的。
答案 0 :(得分:1)
CONVOCATION表上的数据如下:
表RECAP是:
要从字段 id s_code s_percent s_type s_name player total-value
XI-GB-1 12220 35 2 yaba p1 120398
XI-GB-1 14020 33 2 yaba p1 120398
XI-GB-1 31110 32 2 yaba p1 120398
XI-GB-2 23630 36 4 daba p4 123453
XI-GB-2 41010 30 4 daba p4 123453
XI-GB-2 23110 34 4 daba p4 123453
XI-GB-3 15120 75 7 doo p3 78542
XI-GB-3 12511 25 7 doo p3 78542
XI-GB-4 23110 10 9 hakuna p2 97234
XI-GB-4 23510 55 9 hakuna p2 97234
XI-GB-4 15110 35 9 hakuna p2 97234
XI-GB-5 23210 40 1 matata p6 10000
XI-GB-5 23230 60 1 matata p6 10000
中获取数字,我使用了一个数组公式:
<mat-checkbox (click)= "$event.stopPropagation()"
(change)="$event ? selection.toggle(row) :null"
[checked]="selection.isSelected(row)"
[disabled]="myCondition"
color="primary">
</mat-checkbox>
因为这是一个数组公式,所以必须将其插入 CTRL + SHIFT + ENTER 否则将无效!
注意:关于您的数据,只要所有MAtric
和=INDEX(Convocation!$A$2:$A$5;MATCH(A2&B2;Convocation!$B$2:$B$5&Convocation!$C$2:$C$5;0))
在行之间都不同,此公式将起作用。如果任何时候您有2个客户端(2行),它们的Apellido
和Nombre
相同,则该公式将无法正常工作,因为yoo需要第三个字段来区分两个客户端(也许是第二Apellido
)。
希望您可以使其适应您的需求。
更新:万一该公式一无所获,它将引发错误,但是您可以使用Nombre
捕获它,因此理想的公式将是:
Apellido
因为这是一个数组公式,所以必须将其插入 CTRL + SHIFT + ENTER 否则将无效!
更新2:您可以在此处下载示例:https://drive.google.com/open?id=1kQ0boXYl7nvkTef62zVg9Jw7raOqgsuf