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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 13:02   #11
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

зачем Вам вообще скидывать? откройте свой документ, нажмите alt+f11, создайте модуль и скопируйте в него код
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 19.12.2012, 17:44   #12
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

можно еще так:
Код:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Sub поиск_уникальных_и_сумма()
    Dim avArr, avArr2, li As Long, i As Long, j As Long, S1 As Integer, S2 As Integer, t
    
    With New Collection
        On Error Resume Next
        S1 = Application.InputBox(Prompt:="Поставьте начальную строку", Title:="НАЧАЛЬНАЯ СТРОКА", Type:=1)
            If S1 = 0 Then Exit Sub
        S2 = Application.InputBox(Prompt:="Поставьте конечную строку ", Title:="КОНЕЧНАЯ СТРОКА", Type:=1)
            If S2 = 0 Then Exit Sub
        t = GetTickCount
        avArr = Range("H" & S1 & ":" & "L" & S2).Value
        avArr2 = Range("H" & S1 & ":" & "L" & S2).Value
        For i = 1 To UBound(avArr)
            If IsEmpty(avArr(i, 1)) = False And avArr(i, 1) <> "Телефон Б" Then
                .Add avArr(i, 1), CStr(avArr(i, 1))
                If Err = 0 Then
                    li = li + 1: avArr(li, 1) = avArr(i, 1)
                Else: Err.Clear
                End If
            End If
        Next i

        For i = 1 To li
            avArr(li, 2) = 0
            avArr(li, 2) = Application.SumIf(Range("H" & S1 & ":" & "H" & S2), avArr(li, 1), Range("L" & S1 & ":" & "L" & S2))
            'For j = 1 To UBound(avArr)
            '     If avArr(i, 1) = avArr2(j, 1) Then
            '        avArr(i, 2) = avArr(i, 2) + avArr2(j, 5)
            '    End If
            'Next j
        Next i
        
    End With
    
    If li Then Range("O" & S1).Resize(li, 2).Value = avArr
    MsgBox (GetTickCount - t) / 1000
End Sub
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 19.12.2012, 18:11   #13
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

не прав, сори, последний код работает не верно

добавлено позже:

нужно поменять вот этот кусок кода:
Код:
avArr(li, 2) = 0
            avArr(li, 2) = Application.SumIf(Range("H" & S1 & ":" & "H" & S2), avArr(li, 1), Range("L" & S1 & ":" & "L" & S2))
            'For j = 1 To UBound(avArr)
            '     If avArr(i, 1) = avArr2(j, 1) Then
            '        avArr(i, 2) = avArr(i, 2) + avArr2(j, 5)
            '    End If
            'Next j
на этот:

Код:
avArr(i, 2) = 0
            avArr(i, 2) = Application.SumIf(Range("H" & S1 & ":" & "H" & S2), avArr(i, 1), Range("L" & S1 & ":" & "L" & S2))
            'For j = 1 To UBound(avArr)
            '     If avArr(i, 1) = avArr2(j, 1) Then
            '        avArr(i, 2) = avArr(i, 2) + avArr2(j, 5)
            '    End If
            'Next j
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 19.12.2012 в 18:36.
staniiislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет суммы killer12rus SQL, базы данных 1 26.09.2010 00:35
Подсчет суммы. Firebird artemavd БД в Delphi 3 31.03.2010 15:29
Подсчет суммы Владимир1988 Помощь студентам 7 05.12.2009 23:02
Подсчет суммы в DBGrid girz БД в Delphi 3 16.05.2009 14:11
Подсчет суммы Kardi PHP 0 23.11.2008 16:46