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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.10.2008, 19:15   #1
Rom1k06
Форумчанин
 
Регистрация: 30.07.2008
Сообщений: 125
По умолчанию Функции в макросе.

Вечер добрый.
Подскажите что нужно исправить в коде стобы он складывал значения в ячейке а не ячейку..


With Sheets("Сводная")
For j = 2 To Sheets("Marks").Cells(Rows.Count, "A").End(xlUp).Row
a = 0
For i = 8 To Sheets("Сводная").Cells(Rows.Count, "A").End(xlUp).Row
Set x = Sheets("Сводная").Columns("A").Find (what:=Sheets("Marks").Cells(j, 1), LookAt:=xlWhole)
If Not x Is Nothing Then
If .Cells(x.Row, 6) = "" Then GoTo m1
a = a + .Cells(x.Row, 6)
End If
m1: Next i
Sheets("Marks").Cells(j, 3) = a
Next j

End With

End Sub

Только можно пороще чтобы я разобрался?
Заранее СПАСИБО ЗА ОТВЕТ.....

Последний раз редактировалось Rom1k06; 17.10.2008 в 19:20.
Rom1k06 вне форума
Старый 17.10.2008, 23:20   #2
bakabul
Пользователь
 
Регистрация: 04.09.2008
Сообщений: 15
По умолчанию

а вы не складывайте ячейки
складывайте значения Cells(x.Row, 6).Value
bakabul вне форума
Старый 18.10.2008, 11:01   #3
Rom1k06
Форумчанин
 
Регистрация: 30.07.2008
Сообщений: 125
По умолчанию

Не помогает.......
Может вначале кода присвоить Dim a as variant ?

Как еще можно..
Rom1k06 вне форума
Старый 18.10.2008, 11:50   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Приложили бы Вы пример в виде файла - сразу бы и разобрались...

Попробуйте так, вдруг поможет...
Код:
    With Sheets("Сводная")
        For j = 2 To Sheets("Marks").Cells(Rows.Count, "A").End(xlUp).Row
            Dim a As Long: a = 0
            For i = 8 To Sheets("Сводная").Cells(Rows.Count, "A").End(xlUp).Row
                Set x = Sheets("Сводная").Columns("A").Find(what:=Sheets(" Marks").Cells(j, 1), LookAt:=xlWhole)
                If Not x Is Nothing Then
                    If .Cells(x.Row, 6) = "" Then GoTo m1
                    a = a + Val(.Cells(x.Row, 6))
                End If
m1:         Next i
            Sheets("Marks").Cells(j, 3) = a
        Next j

    End With
EducatedFool вне форума
Старый 19.10.2008, 09:57   #5
Rom1k06
Форумчанин
 
Регистрация: 30.07.2008
Сообщений: 125
По умолчанию

Не неполучается чтото , выкладываю файлик
внутри краткое описание того чт о надо сделать ...


надо сумму всей значений колонки поставить в соответствующею колонку листа 2 в строку согласно искомому критерию ...
Вложения
Тип файла: rar SR NWD.rar (92.9 Кб, 18 просмотров)
Rom1k06 вне форума
Старый 19.10.2008, 10:30   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Используйте такой код:

Код:
Sub Marks()
    Dim a As Long, MarksValue As String
    With Sheets("Сводная")
        For j = 2 To Sheets("Marks").Cells(Sheets("Marks").Rows.Count, "A").End(xlUp).Row
            a = 0: MarksValue = Sheets("Marks").Cells(j, 1).Value
            For i = 8 To .Cells(.Rows.Count, 1).End(xlUp).Row
                If InStr(1, .Cells(i, 1).Value, MarksValue, vbTextCompare) > 0 Then
                    a = a + Val(.Cells(i, 6))
                End If
            Next i
            Sheets("Marks").Cells(j, 3).Value = IIf(a = 0, "", a)
        Next j
    End With
End Sub

Последний раз редактировалось EducatedFool; 19.10.2008 в 10:32. Причина: немного подправил код
EducatedFool вне форума
Старый 19.10.2008, 10:48   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Проблема в вашем коде заключалась в том, что, хоть Вы и перебирали в цикле все ячейки на странице СВОДНАЯ, но метод Find применяли для поиска ячейки во всём столбце А. Соответственно, каждый раз находилась одна и та же ячейка (первая подходящая в этом столбце), и суммировались значения из одной и той же строки 32 раза.

Кстати, Ваша задача решаема без использования макроса - достаточно написать одну большую формулу и вставить её в ячейки листа MARKS... Но по формулам я не специалист
EducatedFool вне форума
Старый 19.10.2008, 11:22   #8
Rom1k06
Форумчанин
 
Регистрация: 30.07.2008
Сообщений: 125
По умолчанию

нет без помощи макроса сдесь необойтись т.к. это только часть таблицы
насамом деле этоограмны инструмент автоматизации процесса аналитики...
в этот код я еще добавлю автоматическое пополнение критериев...
это 1 из 4 модулей...

спасибо за ваш ответ.....
Rom1k06 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прописатьв макросе повтор... Bu$ter Microsoft Office Excel 6 18.09.2008 09:40
Суммирование элементов массива в макросе IgorKr Общие вопросы C/C++ 1 14.04.2008 01:22
Константы в Макросе valerij Microsoft Office Excel 2 03.02.2008 23:33
использование в макросе другой книги Роня Microsoft Office Excel 19 13.09.2007 15:47