Помогите исправить ошибку в функции: сцепить с условием

Автор Snekich, 21.12.2011, 16:46

« назад - далее »

Snekich

Помогите пожалуйста исправить ошибку в функции.

Код:

Option Explicit
Public Function Conc$(c As Range, x As Integer)
    If c.Value = "" Then Exit Function
    If Range(c, c.End(xlDown).Offset(-1)).Offset(, x).Count = 1 Then Conc = c.Offset(, x): Exit Function
    Conc = Trim(Join(Application.Transpose(Range(c, c.End(xlDown).Offset(-1)).Offset(, x).Value), " "))
End Function


Функция Conc имеет вид:   
=Conc(А9;2)   
где:   
A9 - ячейка по которой идет проверка на наличие какого-либо значения   
2 - количество столбцов направо от A9. Определяет столбец в котором производить объединение текста в ячейках пока в столбце после А9 будут пустые ячейки.

Пример работы функции в файле на листе "Функция".

Но в этой функции есть ошибка.

Если в проверяемом столбце (столбец "В") после не пустой ячейки "В7" подряд две и более не пустых ячеек ("В8" и "В9"), то вместо того что бы в ячейке с формулой вписать только значение "С7", формула вписывает значения "С7" + "С8" + "С9".

Помогите пожалуйста исправить функцию.
Ячейки, в которых неверный результат я выделил желтым цветом.

P.S.
Я уже перепробовал несколько вариантов исправить, но после моего вмешательства снановилось только хуже: формула для больших таблиц начинала работать очень медленно.

Wasilic

Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.