Если мой входной массив равен (10,10,20,20,30,30,40,40,50,50), я хотел бы получить простой фрагмент кода, который вернул бы (1,2,3,4,5, 6,7,8,9,10). Я пытаюсь реализовать классификацию ABC, и в настоящее время я использую этот код:
For i = 1 To noA 'noA number of items should be classified as "A"
'return the item number with the i'th largest number in arrTembABC
intTemp = Application.Match(WorksheetFunction.Large(arrTempABC, i), arrTempABC, True)
'assign the category "A" to 'intTemp' item number
SKUinfo(intTemp, 12) = "A"
Next i
'some printing code
Проблема с приведенным выше кодом заключается в том, что при наличии повторяющихся значений всегда возвращается позиция первого экземпляра. Любому другому номеру элемента с таким же значением не присваивается категория.
Так что для рассмотренного выше массива (см. «Среднее значение») код классифицирует только первый экземпляр каждого дублированного значения, а остальныепусто (см. «ABC_CategCry»)