Я не совсем уверен, что именно был ваш вопрос, но я просто предположу, что вы искали способ завершить свою функцию.
В любом случае, во-первых, установка j = 1 не требуется,поскольку он всегда будет начинаться с 1, когда внутренний цикл завершит одну итерацию. Далее вы рассчитываете не абсолютное расстояние, а скорее разницу, которая даст вам неправильные результаты с отрицательными числами и т. Д.
Function Matrix(AArray As Variant, BArray As Variant, Optional asRow As Boolean = True)
Dim actualValue As Integer
Dim i As Integer
Dim j As Integer
Dim iToFind As Integer
Dim jToFind As Integer
Dim minimum As Integer
minimum = Abs(AArray(1) - BArray(1))
For i = 1 To AArray.Count
For j = 1 To BArray.Count
actualValue = Abs(AArray(i) - BArray(j))
If actualValue < minimum Then
iToFind = i
jToFind = j
minimum = actualValue
End If
Next j
Next i
If asRow = True Then
Matrix = Array(iToFind, jToFind)
Else
Matrix = Application.Transpose(Array(iToFind, jToFind))
End If
End Function
Все, что вам нужно сделать сейчас, это выбрать две ячейки (строку илистолбец, необходимо указать с параметром thrid) и введите в формуле. Затем нажмите CTRL + SHIFT + ENTER, и вы получите свое решение.