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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 22:02   #1
Plasmer
 
Регистрация: 02.04.2012
Сообщений: 3
По умолчанию #ЗНАЧ при вызове функции из ячейки

Здравствуйте!

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

Апдейт: уже помогли, проще формулой
Код:
=СУММЕСЛИ(H2:H500;ТЕКСТ(J2;"00")&ТЕКСТ(K2;"00")&L2;G2:G500)
+ .FindNext в функции нельзя использовать, нужно искать по массиву

=====

Есть функция, которая ищет в столбце определенные строковые значения и возвращает сумму целочисленных значений из столбца справа.
Опциональные значения заданы для отладки.

Она работает, если ее вызывать из тестовой процедуры VBA, но выдает #ЗНАЧ, если вызвать ее из ячейки листа

Когда передаются значения, которым не соответствует ни одна строка(ничего не находится), в ячейке появляется 0.

Столбцы


PHP код:
Function СуммаПоКатегории(Optional pm As Integer 7Optional day As Integer 1Optional sf As String "P") As Integer

Dim c 
As VariantfirstAddress As String

With Worksheets
(1).Range("h2:h500")
    
Set c = .Find(ПДС(pmdaysf), LookIn:=xlValues)
    If 
Not c Is Nothing Then
        firstAddress 
c.Address
        
Do
            
СуммаПоКатегории СуммаПоКатегории Range(c.Address).Offset(0, -1)
            
Set c = .FindNext(c)
        
Loop While Not c Is Nothing And c.Address <> firstAddress
    End 
If
End With
End 
Function

Function 
ПДС(pm As Integerday As Integersf As String) As String

ПДС 
IIf(pm10"0" pmpm) & IIfday 10"0" dayday) & sf

End 
Function

Sub test()

Dim a As String
"Z"
MsgBox ("Сумма по категории" ": " СуммаПоКатегории(71a))

End Sub 

Последний раз редактировалось Plasmer; 02.04.2012 в 23:03.
Plasmer вне форума Ответить с цитированием
Старый 03.04.2012, 00:20   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не вот так случайно предполагалось?
Код:
=СУММЕСЛИ((H2:H500=ТЕКСТ(J2;"00")&ТЕКСТ(K2;"00")&L2)*G2:G500)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.04.2012, 01:52   #3
Plasmer
 
Регистрация: 02.04.2012
Сообщений: 3
По умолчанию

IgorGO, так не заработало.

Пишет, что мало аргументов

Суммесли.xls
Plasmer вне форума Ответить с цитированием
Старый 03.04.2012, 10:39   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извините, ошибочка вышла...
примера нет, писал просто сюда, не проверялось, показалось вначале СУММПРОИЗВ, а не СУММЕСЛИ
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.04.2012, 10:40   #5
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от Plasmer Посмотреть сообщение
IgorGO, так не заработало.

Пишет, что мало аргументов

Суммесли.xls
чет я не пойму что у вас не работает? посмотрите пример
Вложения
Тип файла: rar суммирование.rar (12.2 Кб, 9 просмотров)
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 03.04.2012 в 10:48.
staniiislav вне форума Ответить с цитированием
Старый 03.04.2012, 14:54   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Может, у ТС Excel 2000 или более ранний? В этих версиях метод Range.Find не работает в функции листа. В ХР и более поздних работает:
http://forum.ixbt.com/topic.cgi?id=23:31148
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 04.04.2012, 00:59   #7
Plasmer
 
Регистрация: 02.04.2012
Сообщений: 3
По умолчанию

staniiislav, у меня процедура тоже работает, мне нужно в ячейку заносить формулу
Код:
=СуммаПоКатегории()
и получать там число, а не #ЗНАЧ

Казанский, у меня 2007 Эксель. Спасибо еще раз за решение через формулу на cyberforum.ru, через vba получился гораздо более сложный велосипед)
Plasmer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекрытие вариабл при повторном вызове функции KOTBASILIO JavaScript, Ajax 0 18.07.2011 19:09
Ошибка при вызове функции Access violation Hottabych Win Api 1 22.01.2011 20:35
Ошибка при вызове хранимой функции MySQL tavrocotaps Общие вопросы .NET 0 23.04.2010 10:25
как присвоить все три значения вектору В и вывести его как массив столбец при вызове функции Tomoa Microsoft Office Excel 8 08.03.2010 20:42
адрес не активной ячейки при вызове функции skachkovgd Microsoft Office Excel 4 06.12.2007 09:50