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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 14:42   #21
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Вот так попробуйте:
Код:
Sub ertert3()
Dim x(), i&, j&, s#, w, t
With Range("A7", Cells(Rows.Count, "A").End(xlUp))
    x = .Value: .ClearContents
End With
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 1 To UBound(x)
        If Len(x(i, 1)) Then
            .Item(x(i, 1)) = 1: s = Val(x(i, 1))
            If Not .exists(s) Then .Item(s) = x(i, 1) Else .Item(s) = .Item(s) & "|" & x(i, 1)
        End If
    Next i
    For Each w In [{"KredHistory", "Реестр"}]
        With Sheets(w)
            x = IIf(w = "KredHistory", .Range("M8", .Cells(Rows.Count, "M").End(xlUp)).Value, _
                    .Range("AO2", .Cells(Rows.Count, "AO").End(xlUp)).Value)
        End With
        For i = 1 To UBound(x)
            If Len(x(i, 1)) Then
                If Not .exists(x(i, 1)) Then
                    .Item(x(i, 1)) = 1: s = Val(x(i, 1))
                    If Not .exists(s) Then .Item(s) = x(i, 1) Else .Item(s) = .Item(s) & "|" & x(i, 1)
                End If
            End If
        Next i
    Next w
    ReDim x(1 To .Count + 10000, 1 To 1)
    For Each w In .keys
        If IsNumeric(w) Then
            t = Split(.Item(w), "|")
            For i = 0 To UBound(t)
                j = j + 1: x(j, 1) = t(i)
            Next i
            j = j + 2
        End If
    Next w
End With
Range("A7").Resize(j).Value = x()
End Sub
nilem вне форума Ответить с цитированием
Старый 16.06.2012, 15:44   #22
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию

класс! пасиб большое!!!
manowar_gub вне форума Ответить с цитированием
Старый 17.06.2012, 17:39   #23
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию

а можно небольшое уточнение? попробовал добавить 3 лист для сравнения
PHP код:
    For Each w In [{"KredHistory""Реестр", [B]"Реестр2"[/B]}]
        
With Sheets(w)
            
IIf("KredHistory", .Range("M8", .Cells(Rows.Count"M").End(xlUp)).Value, .Range("AO2", .Cells(Rows.Count"AO").End(xlUp)).Value, [B].Range("AJ2", .Cells(Rows.Count"AJ").End(xlUp)).Value[/B]) 
однако вылезает ошибка "неверное число аргументов" - наверное всё сложнее для добавки 3 листа?)
manowar_gub вне форума Ответить с цитированием
Старый 17.06.2012, 17:39   #24
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию

а можно небольшое уточнение? попробовал добавить 3 лист для сравнения
PHP код:
    For Each w In [{"KredHistory""Реестр""Реестр2"}]
        
With Sheets(w)
            
IIf("KredHistory", .Range("M8", .Cells(Rows.Count"M").End(xlUp)).Value, .Range("AO2", .Cells(Rows.Count"AO").End(xlUp)).Value, .Range("AJ2", .Cells(Rows.Count"AJ").End(xlUp)).Value
однако вылезает ошибка "неверное число аргументов" - наверное всё сложнее для добавки 3 листа?)
manowar_gub вне форума Ответить с цитированием
Старый 17.06.2012, 21:04   #25
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Можно как-то так, например:
Код:
Dim ArrWsh, x, i&
ArrWsh = Array("KredHistory", "M", "Реестр", "AO", "Реестр2", "X")
For i = LBound(ArrWsh) To UBound(ArrWsh) Step 2
    With Sheets(ArrWsh(i))
        x = .Range(ArrWsh(i + 1) & 8, .Cells(Rows.Count, ArrWsh(i + 1)).End(xlUp)).Value
    End With
Next
nilem вне форума Ответить с цитированием
Старый 17.06.2012, 22:54   #26
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию

пасиб!

теперь новинка))) сортировка по убыванию диапазона, где сначала находит низ (там ячейка начинается с букв Итог) а потом находит верх (там ячейка пустая). но компилятор ругается на некорректное условия сортировки... подскажите, что не так?

PHP код:
For 7 To 45
If Mid(Sheets("Сводный").Cells(x2).Value14) = "Итог" Then
    niz 
Sheets("Сводный").Cells(x2).Row 1
        z 
Sheets("Сводный").Cells(x2).Row 1
        
While Sheets("Сводный").Cells(z2).Value = Empty
        If 
Sheets("Сводный").Cells(z2).Value = Empty Then verh Sheets("Сводный").Cells(z2).Row 1
        z 
1
        Wend
Sheets("Сводный").Range("B" niz"K" verh).Sort(Key1:=Range("B" verh), Order1:=xlAscendingHeader:=xlGuessOrderCustom:=1MatchCase:=FalseOrientation:=xlTopToBottomDataOption1:=xlSortNormal)

End If


Next x 
manowar_gub вне форума Ответить с цитированием
Старый 17.06.2012, 23:03   #27
manowar_gub
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 21
По умолчанию

разобрался сам)

p.s. мож как-то проще можно?... а то пишу основываясь за записях макросов и базовых знаний программирования)

PHP код:
For 7 To 45
If Mid(Sheets("Сводный").Cells(x2).Value14) = "Итог" Then
    niz 
Sheets("Сводный").Cells(x2).Row 1
        z 
Sheets("Сводный").Cells(x2).Row 1
        
While Sheets("Сводный").Cells(z2).Value <> Empty
        
verh Sheets("Сводный").Cells(z2).Row
        z 
1
        Wend
Worksheets("Сводный").Range("B" niz"K" verh).Sort(Key1:=Range("B" verh), Order1:=xlAscendingHeader:=xlGuessOrderCustom:=1MatchCase:=FalseOrientation:=xlTopToBottomDataOption1:=xlSortNormal)


End If


Next x 
manowar_gub вне форума Ответить с цитированием
Старый 17.06.2012, 23:28   #28
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

пробуйте
Код:
On Error Resume Next 'если вдруг "Итог..." не найдется
With Sheets("Сводный").Columns(2).Find("Итог*")
    With Range(.Offset(-1), .End(xlUp)).Resize(, 10)
        .Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlGuess
    End With
End With
On error Goto 0
nilem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно перевести книгу с макросом из 2007 в 2003 Excel? Алекс7 Microsoft Office Excel 5 15.10.2011 09:21
открыть скриптом файл Excel alvazor Microsoft Office Excel 9 04.06.2010 16:56
Открыть из Delphi файл Excel masterdela Общие вопросы Delphi 5 30.03.2010 10:47
Макрос открывающий книгу Excel. agregator Microsoft Office Word 4 10.07.2009 21:41
Как открыть лист в excel Alexi Общие вопросы Delphi 4 05.07.2009 22:42