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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 09:56   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение.
см.лист1, аналогично с обьемом, можно стоимости для всех сосчитать
Вложения
Тип файла: rar книга626.rar (15.4 Кб, 33 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.03.2011, 11:04   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Тут недавно была похожая задача - слегка переделал под эту задачу тот свой код (осталась например переменная gottabl, которая здесь в общем не нужна, но не мешает)
Может быть это и не нужно, но я решил отдельно считать все виды звонков (4 существующих в данных вида, только объём, т.к. стоимость везде 0).
Код проверял на файле Игоря Книга626.
Запускать на активном Листе2, результат на Листе1 в O:R соответственно номерам в A.

Код:
Option Explicit
'переделано из http://www.programmersforum.ru/showpost.php?p=758764&postcount=34

Sub Otbor()
    Dim a(), b, c, d, e, i As Long, ii As Long, j As Long, jj As Long, k As Long, temp As String
    Dim gottabl As Workbook
    Set gottabl = ThisWorkbook 'Workbooks("2_готовая табл.xlsx")

    a = Range("C2:F" & Range("E" & Rows.Count).End(xlUp).Row).Value
    ReDim b(1 To UBound(a), 1 To 3)

    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(a)
            temp = a(i, 1) & a(i, 3)
            If Not .Exists(temp) Then
                j = j + 1: .Item(temp) = j
                b(j, 1) = a(i, 3)
                b(j, 2) = a(i, 1)
                b(j, 3) = a(i, 4)
            Else
                k = .Item(temp)
                b(k, 3) = b(k, 3) + a(i, 4)
            End If
        Next
    End With


    With CreateObject("Scripting.Dictionary")

        For i = 1 To j
            temp = b(i, 1)
            If Not .Exists(temp) Then jj = jj + 1: .Item(temp) = jj
        Next

        ReDim c(1 To .Count, 1 To 5)

        For i = 1 To UBound(b)
            temp = b(i, 1)
            If Len(temp) Then
                c(.Item(temp), 1) = b(i, 1)
                Select Case b(i, 2)
                Case "Вх"
                    c(.Item(temp), 2) = b(i, 3)
                Case "Исх"
                    c(.Item(temp), 3) = b(i, 3)
                Case "ВхSMS"
                    c(.Item(temp), 4) = b(i, 3)
                Case "ИсхSMS"
                    c(.Item(temp), 5) = b(i, 3)
                End Select
            End If
        Next

    End With

With gottabl.Sheets(1)
    d = .Range("A2:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Value

ReDim e(1 To UBound(d), 1 To 4)

For i = 1 To UBound(d)
For ii = 1 To UBound(c)
If CStr(d(i, 1)) = CStr(c(ii, 1)) Then e(i, 1) = c(ii, 2): e(i, 2) = c(ii, 3): e(i, 3) = c(ii, 4): e(i, 4) = c(ii, 5): Exit For
Next ii, i
.Range("O1").Value = "Вх"
.Range("P1").Value = "Исх"
.Range("Q1").Value = "ВхSMS"
.Range("R1").Value = "ИсхSMS"
.Range("O2:R2").Resize(UBound(e)) = e
End With

End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 21.03.2011, 11:16   #13
Kinet
 
Регистрация: 17.03.2011
Сообщений: 3
По умолчанию

Спасибо большое. Я пытался эту формулу применить, но у меня почему то не вышло. Все время 0 выдавало.
Kinet вне форума Ответить с цитированием
Старый 21.03.2011, 11:26   #14
Kinet
 
Регистрация: 17.03.2011
Сообщений: 3
По умолчанию

Спасибо всем большое!!!
Kinet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск совпадений mistx Microsoft Office Excel 22 14.08.2009 13:41
Вывод суммы значений на страницу сайта BIOX PHP 6 22.06.2009 16:37
Задача на поиск и вывод компонентов stscolt Помощь студентам 1 11.04.2009 14:58
Как в FastReport-е сформировать новую страницу _SERGEYX_ Компоненты Delphi 0 13.02.2009 11:26
Академические задачи по с++ (гдз) Сортировка и поиск совпадений по массиву Andrew#90 Общие вопросы C/C++ 2 10.01.2009 18:44