Есть таблица, в ней список наименований(повторяющихся), и у каждого свой артикул. Если я пытаюсь сопоставить артикула со списком наименований, то впр находит первый попавшийся артикул.
Нужно как-то посчитать так, что если такой артикул через ВПР уже нашёлся, то он искал следующее соответствие. Пример файла во вложении. Там всё более чем понятно.
Буду очень благодарен за помощь в решении моей проблемы...
memo, уважаемый, битый час ломаю голову над синтаксисом, уже и дробил по частям, и как только не старался - даже скопированное, применительно к моей таблице, не смог заставить корректно работать, не говоря уже о том, чтобы просто понять, как это вообще работает. Не могли бы вы объяснить? По отдельности-то я понимаю, как каждая из этих функций работает, но вот вместе, на Вашем примере - никак не получается.
Павел \Ʌ/, само собой, первым, на что я наткнулся, была эта статья. Но формула массива мне не совсем подходит - надо как-то применять на длинной таблице, и делать это будут люди, которые с трудом понимают, что такое ВПР.
Spartan1237, как вариант для работы на конкретном месте - UDF Например тот же результат даст формула
Код
=VLOOKUP2(A:B;1;G2;СЧЁТЕСЛИ($G$2:G2;G2);2)
где VLOOKUP2() - это UDF, код её
Код
Function VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _
n As Long, ResultColumnNum As Long)
Dim i As Long, iCount As Long
If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
VLOOKUP2 = ""
For i = 1 To UBound(Table)
If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1
If iCount = n Then
VLOOKUP2 = Table(i, ResultColumnNum)
Exit For
End If
Next i
End Function
Всем спасибо! Проблема была решена кардинально - таблица перенесена в Google Spreadsheets, написана кнопка перебора и подстановки, права доступа ограничены.