Em H1 seria:
=INDEX($B$2:$D$4,MATCH(G1,$A$2:$A$4,0),MATCH(F1,$B$1:$D$1,0))
Que pode simplesmente ser copiado ...
não há necessidade de VBA ... ... mas se você quiser que isso seja feito via VBA para obter um UDF de duas formas de fazê-lo.
# 1 como folha simbiótica / VBA
Public Function getTarif(source, dest) As Double
With Sheet1
source = Application.Match(source, .Range("B1:D1"), 0)
dest = Application.Match(dest, .Range("B1:D1"), 0)
If IsNumeric(source) And IsNumeric(dest) Then getTarif = .Cells(source + 1, dest + 1).Value
End With
End Function
# 2 VBA completo
Public Function getTarif(source, dest) As Double
Dim a, b
a = Array("CGK", "SIN", "KUL")
b = Array(Array(0, 0.5, 1.5), _
Array(0.25, 0, 0.75), _
Array(1.1, 0.85, 0))
source = Application.Match(source, a, 0) - 1
dest = Application.Match(dest, a, 0) - 1
If IsNumeric(source) And IsNumeric(dest) Then getTarif = b(source)(dest)
End Function
# 1 precisa de uma tabela como na imagem (na planilha com o codinome Sheet1, que pode ser alterado)
Nem # 1 nem # 2 diferenciam maiúsculas de minúsculas, então =getTarif("siN","kUl")
ainda produzirá 0,85.