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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2015, 19:27   #11
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Screamr
Вариант 1:
Код:
Sub Extract_Unique()
    Dim avArr, li As Long, ii As Long, jj As Long, isNew As Boolean
    ReDim avArr(1 To Rows.Count, 1 To 2)
    With New Collection
        On Error Resume Next
        For ii = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            isNew = True
            .Add ii, Cells(ii, 1) & ":" & Cells(ii, 4)
            If Err = 0 Then
                For jj = 1 To li
                    If avArr(jj, 1) = Cells(ii, 1) And Len(avArr(jj, 2)) < Len(Cells(ii, 4)) Then
                        isNew = False
                        Exit For
                    End If
                Next
                If isNew Then
                    li = li + 1: avArr(li, 1) = Cells(ii, 1): avArr(li, 2) = Cells(ii, 4)
                Else
                    avArr(jj, 1) = Cells(ii, 1): avArr(jj, 2) = Cells(ii, 4)
                End If
                
            End If
        Next
    End With
    If li Then
        [F2:G2].Resize(li).Value = avArr
    End If
End Sub
форму sumif для ячеек Н2:Нх пропишете?
WIX-FILTERS. A Filter for every application.

Последний раз редактировалось AleksandrH; 05.11.2015 в 19:37.
AleksandrH вне форума Ответить с цитированием
Старый 05.11.2015, 19:42   #12
Screamr
Новичок
Джуниор
 
Регистрация: 03.05.2011
Сообщений: 2
По умолчанию

нет, если можете напишите
спасибо большое
Screamr вне форума Ответить с цитированием
Старый 05.11.2015, 20:23   #13
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Варіант2
Код:
Sub Extract_Unique()
    Dim avArr, li As Long, ii As Long, jj As Long, isNew As Boolean
    ReDim avArr(1 To Rows.Count, 1 To 3)
    With New Collection
        On Error Resume Next
        For ii = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            isNew = True
            .Add ii, Cells(ii, 1) & ":" & Cells(ii, 4)
            If Err = 0 Then
                For jj = 1 To li
                    If avArr(jj, 1) = Cells(ii, 1) And Len(avArr(jj, 2)) < Len(Cells(ii, 4)) Then
                        isNew = False
                        Exit For
                    End If
                Next
                If isNew Then
                    li = li + 1: avArr(li, 1) = Cells(ii, 1): avArr(li, 2) = Cells(ii, 4): avArr(li, 3) = Int(Cells(ii, 3))
                Else
                    avArr(jj, 1) = Cells(ii, 1): avArr(jj, 2) = Cells(ii, 4): avArr(jj, 3) = avArr(jj, 3) + Int(Cells(ii, 3))
                End If
                
            End If
        Next
    End With
    If li Then
        [F2:H2].Resize(li).Value = avArr
    End If
End Sub
Ребята, если захотят, еще вариантов могут подкинуть
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с таблицей Masteroook HTML и CSS 1 11.11.2013 12:07
Помогите с таблицей Wirm Microsoft Office Excel 14 06.06.2009 00:46
Помогите разобраться rainbow Паскаль, Turbo Pascal, PascalABC.NET 45 04.04.2009 20:46
Помогите разобраться в С++ saleens7 Общие вопросы C/C++ 5 09.01.2009 17:08
Помогите разобраться! Holodok Помощь студентам 12 02.05.2008 18:13