У меня есть лист с данными, похожими на следующие:
P1_ShipType P2_ShipType RoundTime
Kus_AssaultFrigate Tai_AssaultFrigate 117
Kus_AssaultFrigate Tai_AttackBomber 17
Kus_AssaultFrigate Tai_Carrier 1191
Kus_AttackBomber Tai_AssaultFrigate 2775
Kus_AttackBomber Tai_AttackBomber 18
Kus_AttackBomber Tai_Carrier 0
Kus_Carrier Tai_AssaultFrigate 1354
Kus_Carrier Tai_AttackBomber 8
Kus_Carrier Tai_Carrier 0
Как получить "RoundTime", когда P1_ShipType - Kus_AttackBomber, а P2_ShipType - Tai_Carrier?
В SQL это легко, но как вы делаете это в Excel?
Я нашел способ сделать это, используя формулы здесь: https://support.microsoft.com/en-us/kb/214142
Но мне любопытно, как бы я достиг этого, используя сводные таблицы или VBA. Мне нужно иметь возможность выполнять некоторые математические операции с возвращаемыми значениями.
Вот дизайн UDF I, основанный на ответе, приведенном ниже. Спасибо!
Function GetRoundTime(s1 As String, s2 As String, s3 As String) As String
Dim i As Long
'Need to find out what the last row is dynamically instead of hardcoding it at 1000
For i = 2 To 1000
If Worksheets(s3).Cells(i, "D").Value = s1 And Worksheets(s3).Cells(i, "I").Value = s2 Then
GetRoundTime = CStr(Worksheets(s3).Cells(i, "K").Value)
Exit Function
End If
Next i
GetRoundTime = "Failed"
End Function