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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 07:18   #1
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию Макрос по сбору информации с рабочих листов на итоговый...

Есть макрос, который копирует на лист "Сравнение" столбцы F с рабочих листов 1...n.
Мне бы этот макрос усовершенствовать чуть чуть, что бы дополнительно на этот лист копировался бы и порядковый номер строки. Он находится в столбце А, в строках 3,5,7 итд...
Помогите пожалуйста...товарищи программисты ) товарищам строителям )
Вложения
Тип файла: rar Тест.rar (287.5 Кб, 33 просмотров)

Последний раз редактировалось TimeStopper; 17.01.2013 в 07:57.
TimeStopper вне форума Ответить с цитированием
Старый 17.01.2013, 09:34   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Так пойдет?
Код:
Sub GetColumns()
    Dim lRow As Long
    
    Application.ScreenUpdating = False
        
    Set compSht = ActiveWorkbook.Sheets("Сравнение")
    compSht.Columns("A:L").Clear
    For Each Sh In Sheets
        k = k + 1
        If IsNumeric(Sh.Name) Then
            compSht.Cells(2, k) = Sh.Name
            lRow = Sheets(Sh.Name).Cells(Rows.Count, 6).End(xlUp).Row + 1
            i = 3
            Do
                DoEvents
                
                compSht.Cells(i, k) = Sheets(Sh.Name).Range("F" & i)
                compSht.Cells(i, k).HorizontalAlignment = xlLeft
                compSht.Cells(i + 1, k) = Sheets(Sh.Name).Range("A" & i)
                compSht.Cells(i, k).HorizontalAlignment = xlRight
                i = i + 2
                If Sheets(Sh.Name).Range("A" & i) = "" Then Exit Do
            Loop
            
        End If
    Next
        
    Application.ScreenUpdating = True
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 17.01.2013, 09:57   #3
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Вообще это то, что надо
...вот только по 12 столбцу - там с 804 номера прерывается макрос. Это связано с пустыми ячейками видимо, но у меня эти пустые ячейки - необходимость...
И если бы можно было оформить границы ячеек, как на примере...то было бы вообще супер...читать сложно очень!
TimeStopper вне форума Ответить с цитированием
Старый 17.01.2013, 10:14   #4
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Вот
Код:
Sub GetColumns()
    Dim lRow As Long
    
    Application.ScreenUpdating = False
        
    Set compSht = ActiveWorkbook.Sheets("Сравнение")
    compSht.Columns("A:L").Clear
    For Each Sh In Sheets
        k = k + 1
        If IsNumeric(Sh.Name) Then
            compSht.Cells(2, k) = Sh.Name
            lRow = Sheets(Sh.Name).Cells(Rows.Count, 6).End(xlUp).Row + 1
            i = 3
            Do
                DoEvents
                
                compSht.Cells(i, k) = Sheets(Sh.Name).Range("F" & i)
                compSht.Cells(i, k).HorizontalAlignment = xlLeft
                compSht.Cells(i + 1, k) = Sheets(Sh.Name).Range("A" & i)
                compSht.Range(compSht.Cells(i, k), compSht.Cells(i + 1, k)).Interior.Color = 16764057
                For xxx = 7 To 10
                    compSht.Range(compSht.Cells(i, k), compSht.Cells(i + 1, k)).Borders(xxx).LineStyle = xlContinuous
                Next
                i = i + 2
                If Sheets(Sh.Name).Range("B" & i) = "" Then Exit Do
            Loop
            
        End If
    Next
        
    Application.ScreenUpdating = True
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 17.01.2013, 11:10   #5
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

Огромное спасибо! Всех благ вам! )
TimeStopper вне форума Ответить с цитированием
Старый 17.01.2013, 13:40   #6
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

можно еще такой вариант:
Код:
Sub Extract_Unique2()
   Dim vItem, sh As Worksheet
   With CreateObject("Scripting.Dictionary"): .CompareMode = vbTextCompare
   For Each sh In Sheets
    If ActiveSheet.Name <> sh.Name Then
      For Each vItem In sh.Range("F3", sh.Cells(Rows.Count, "F").End(xlUp)).Value
         If Not IsEmpty(vItem) Then .Item(Trim(vItem)) = .Item(Trim(vItem)) + 1  ' в массиве .Keys накопятся уникальные значения, а в .Items - их количество
      Next
    End If
   Next
      If .Count Then [N10].Resize(.Count).Value = Application.WorksheetFunction.Transpose(.Keys)
      If .Count Then [O10].Resize(.Count).Value = Application.WorksheetFunction.Transpose(.items)
   End With
End Sub
взято вот от сюда:
http://www.excel-vba.ru/chto-umeet-e...ge-1/#comments
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
список из столбцов в итоговый список макрос fedr42 Microsoft Office Excel 2 24.07.2012 13:22
Макрос для всех листов albih Microsoft Office Excel 3 12.04.2012 14:16
Макрос для всех листов as-is Microsoft Office Excel 8 10.02.2011 21:15
Автоматический перенос информации из Листов... belarusone Microsoft Office Excel 5 06.08.2009 12:39
Прогрммма по сбору информации с сайтов новостей Mss_Smith Помощь студентам 9 12.05.2007 14:49