Я не уверен, что параметр, который вы пытаетесь получить от вашей UDF, так что мой код ниже содержит несколько из них.
Во-первых, вам нужно перебрать ваши Range.Cells
, в моем коде я предполагал, когда был матч, вы читали Column
(или) и Exit
петлю, клетки For
.
Во-вторых, есть несколько возможных результатов вы могли бы получить, давайте использовать Sample результат, MATCHCOLOUR(A1,B1:B10)
и сотовый B5 имеет тот же цвет имеет ячейки A1:
Abosulte Колонка: номер столбца B5 >> Retruns 2
относительная колонка: относительное число столбец B% до А1 >> Retruns 1
Абсолютный Ряд: число строк B5 >> Retruns 5
Относительная Роу: относительный номер строки B5 к A1 >> Retruns 4
код
Function MATCHCOLOUR(rColor As Range, rRange As Range) As Long
Dim vResult As Long
Dim c As Range
For Each c In rRange.Cells
If c.Interior.Color = rColor.Interior.Color Then
' getting the absolute column number of the match in the Range
vResult = c.Column
' getting the absolute column number of the match in the Range
vResult = c.Row
' getting the relative columns number of the match in the Range and current cell
vResult = c.Column - rColor.Column
' getting the relative rows number of the match in the Range and current cell
vResult = c.Row - rColor.Row
Exit For
End If
Next c
MATCHCOLOUR = vResult
End Function
Итак, запустите это Функция, при попытке получить абсолютную строку первого вхождения клетки цвета совпадает, ячейка B5 >> вернется 5:
Мне очень жаль, но ваш экран выстрел не соответствует вашему образцу результат с использованием вашей формулы, можете ли вы показать пример данных, который имеет значение? –
Я никогда не слышал о '.ColumnIndex'. Возможно, вы имеете в виду '.Column'? –
В вашем примере результата, если B5 и A1 имеют один и тот же цвет, а результат, который вы ищете, равен 5, то вы имеете в виду 'Rows', а не' Columns', и должно быть 4, а не 5, No? –