Прошу знатоков помочь, задача трудная. Под силу только сильным логикам.

Автор Retiree, 23.09.2012, 10:35

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

Михаил С.

По шагам прогнал - все отрабатывает, но все равно 40 считает.
Отдельное спасибо можно на QiWi-кошелек 909-771-53-87 или ЯД 41001136675053

kuklp

Понял, Миш. Запустил в 2010 - та же ерунда. Неправильно считает counta. Замени на:
MyCount = Application.Sum(b) - 1
Это мелкие виноваты! В 2003 и 2007 считает правильно.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Михаил С.

Ну я тоже до этого
ЦитироватьMyCount = Application.Sum(b) - 1
допер, правда чуть позже, чем ты на форум выложил.
Отдельное спасибо можно на QiWi-кошелек 909-771-53-87 или ЯД 41001136675053

MCH

Без макросов:
формула массива:
=СУММ(ЗНАК(МУМНОЖ((СТРОКА(ИНДЕКС(A:A;1):ИНДЕКС(A:A;МАКС(C2:C9)-МИН(B2:B9)+1))-1+МИН(B2:B9)>=ТРАНСП(B2:B9))*(СТРОКА(ИНДЕКС(A:A;1):ИНДЕКС(A:A;МАКС(C2:C9)-МИН(B2:B9)+1))-1+МИН(B2:B9)<=ТРАНСП(C2:C9));1^B2:B9)))-1

MCH

еще вариант UDF:
Function MyCount2&(r As Range)
    Dim a, i&, b As Range, m&
    a = r
    m = Application.Min(a)
    For i = 1 To UBound(a)
        If b Is Nothing Then
            Set b = Range(Cells(a(i, 1) - m + 1, 1), Cells(a(i, 2) - m + 1, 1))
        Else
            Set b = Union(b, Range(Cells(a(i, 1) - m + 1, 1), Cells(a(i, 2) - m + 1, 1)))
        End If
    Next i
    MyCount2 = b.Count - 1
End Function