Я думаю, что я что-то просто с видом ...Создать пользовательскую функцию, которая работает, когда замедлен
Моя идея заключается в том, чтобы создать функцию в Excel, что проще установить, чем следующее: =INDEX($A$1:$A$5,AGGREGATE(15,6,ROW($B$1:$B$5)/($B$1:$B$5=1),ROW(1:1)))
(см ScottCraner's comment in this answer для этой функции на практике)
Я создал следующий UDF:
Public Function findUnique(ByVal indexRange As Range, matchRange As Range, matchVal As Long)
' Trying to create a dynamic function of:
' =INDEX($A$1:$A$5,AGGREGATE(15,6,ROW($B$1:$B$5)/($B$1:$B$5=1),ROW(1:1)))
findUnique = Evaluate("=Index(" & indexRange.Address & ",AGGREGATE(15,6,Row(" & matchRange.Address & _
")/(" & matchRange.Address & "=" & matchVal & "),Row(" & ActiveCell.Row & ":" & ActiveCell.Row & ")))")
End Function
И почти работ. Кроме того, когда я перетаскиваю из первой строки, данные не обновляются. Я должен щелкнуть в ячейку «повторного запуска» функции, чтобы получить правильные данные, чтобы показать:
(Колонка D является то, что формула, введены правильно).
Но как я могу получить формулу для автоматического обновления без повторного входа в ячейку?
Я также попытался добавить четвертую переменную:
Public Function findUnique(ByVal indexRange As Range, matchRange As Range, matchVal As Long, curRow as Long)
findUnique = Evaluate("=Index(" & indexRange.address & ",AGGREGATE(15,6,Row(" & matchRange.address & _
")/(" & matchRange.address & "=" & matchVal & "),Row(" & curRow & ":" & curRow & ")))")
End Function
и введите как: =findUnique($A$1:$A$5,$B$1:$B$5,1,ROW())
, но он просто возвращает ошибку #VALUE
(Кроме того, как я избежать ActiveCell.Row
, как я это пробурено в моей голове, чтобы избежать использования Active
ничего ...)
Спасибо за любые мысли или советы!
Если вы 'Debug.Print ActiveCell.Row' - вы увидите, что это дело расшитое вас. Однако пока не найдено солна. – OldUgly
@ OldUgly Я знал это! Ха-ха-да, я понял, что это причина, но не может понять, почему использование 'Row()' также приводит к ошибке. – BruceWayne