Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 14:00   #1
Squarded
Пользователь
 
Регистрация: 23.07.2011
Сообщений: 20
По умолчанию Создание пользовательской формулы

Здравствуйте!
Пишу формулу для облегчения работы, суть в том что она находит соответствие заданной в определенной ячейке строки в заданном столбце и если находит то суммирует ячейки сбоку от совпадений.
Я написал вот это
Код:
Function спецсумм(Текст As String, Диапазон As Range, сдвиг As String)
    
    Dim rCell As Range
   
    Dim vResult
Dim a As String
Dim b As Range
Dim Find As WorksheetFunction
   Dim Mid As WorksheetFunction
 
            For Each rCell In Диапазон
                
            a = WorksheetFunction.Mid(rCell, Find(Текст, rCell, 1), Len(Текст))
            b = a
            If a = Текст Then
                vResult = WorksheetFunction.SUM(rCell.Offset(0, сдвиг$), vResult)
            End If
        Next rCell


   спецсумм = vResult
End Function
Помогите, пожалуйста, привести ее в корректный вид
Вложения
Тип файла: rar 0000 спецсумм.rar (8.6 Кб, 14 просмотров)
Squarded вне форума Ответить с цитированием
Старый 05.12.2011, 14:39   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Может так?
Код:
Function спецсумм2(Текст As String, Диапазон As Range, сдвиг As String)
    Dim rCell As Range

    For Each rCell In Диапазон
        If rCell Like "*" & Текст & "*" Then спецсумм2 = спецсумм2 + rCell.Offset(0, сдвиг$)
    Next rCell

End Function
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.12.2011, 15:44   #3
Squarded
Пользователь
 
Регистрация: 23.07.2011
Сообщений: 20
По умолчанию

Hugo121, спасибо огромное!
Squarded вне форума Ответить с цитированием
Старый 05.12.2011, 17:37   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вообще-то в данной задаче правильнее так:
Код:
Function спецсумм3(Текст As String, Диапазон As Range, сдвиг As String)
    Dim rCell As Range

    For Each rCell In Диапазон
        If Application.Trim(rCell) = Текст Then спецсумм3 = спецсумм3 + rCell.Offset(0, сдвиг$)
    Next rCell

End Function
т.к. Like с *, как и Ваша задумка с Find (а ещё Instr() можно использовать), найдёт соответствие и в строке " Возвратные расходы".
В общем, смотря какая задача в целом.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание формулы для прайс-листа demon932008 Microsoft Office Excel 10 01.07.2011 18:29
Создание пользовательской формы dreik92 Microsoft Office Excel 0 16.04.2011 02:08
Создание формулы Antifriz Microsoft Office Excel 2 23.02.2011 01:13
создание формулы excel Olya1985 Microsoft Office Excel 4 25.01.2011 22:23
Создание теста в VBA с пом-ью пользовательской формы. HellkilleR Microsoft Office Excel 3 14.04.2010 23:00