Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Создание макроса для поиска одинаковых значений в ячейках и укомплектовывания

Ответить
Настройки темы
2010 - [решено] Создание макроса для поиска одинаковых значений в ячейках и укомплектовывания

Пользователь


Сообщения: 63
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Программа.jpg
(95.9 Kb, 12 просмотров)
Вложения
Тип файла: xlsx Копия pickpack.xlsx
(10.7 Kb, 5 просмотров)
Доброго времени суток уважаемые форумчане.
Существует проблема в написании макроса в Excel.
Честно говоря я немного далек от этого, лет 5 не занимался подобным и тупо все забыл.
Необходимо создать макрос для поиска и сортировки наименований таблицы и записывать их в отдельные строки.
Пример, как это должно быть в пристежке.
Т.е. макрос должен найти одинаковые значения во всем столбце (до 100 строк) и перенести наименование, ячейку и количество, для каждого наименования отдельно.
Люди добрые, помогите кто чем может)) Может кто писал подобное....

Отправлено: 17:32, 20-01-2015

 

Пользователь


Сообщения: 63
Благодарности: 6

Профиль | Отправить PM | Цитировать


Iska, На самом деле круто, спасибо, только нужно чтобы это все графически выводилось, а не в окне отладки.

-------
Человек человеку - друг, а зомби зомби - зомби


Отправлено: 12:59, 27-01-2015 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Если опишете и покажете, как именно надо — попробуем. Сразу скажу, что вариант «Всё на том же листе в виде подтаблиц» мне не сильно нравится.

Конечная цель этих действий какова вообще?

Отправлено: 13:18, 27-01-2015 | #22


Пользователь


Сообщения: 63
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Срез.jpg
(28.7 Kb, 4 просмотров)

Я скинул файл вчера, как сам навоял, я таблицу раскидал по разным листам......было бы не плохо, чтобы макрос выкидвал эту таблицу на другой лист в таком примерно виде

-------
Человек человеку - друг, а зомби зомби - зомби


Отправлено: 15:58, 27-01-2015 | #23


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Попробуйте так (замените существующую процедуру «Sample()»):
Скрытый текст
Код: Выделить весь код
Sub Sample()
    Dim objConnection As Object
    Dim objRecordSet1 As Object
    Dim objRecordSet2 As Object
    
    Dim objCurRegion As Range
    
    Dim objWorksheet As Worksheet
    Dim objRange As Range
    
    
    Set objConnection = CreateObject("ADODB.Connection")
    
    With objConnection
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = _
            "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=""Excel 8.0;HDR=Yes;"""
        .Open
    End With
    
    Set objCurRegion = ThisWorkbook.Worksheets.Item("Адресная программа").Range("B2").CurrentRegion
    
    Set objRecordSet1 = objConnection.Execute( _
            "SELECT DISTINCT Наименование " & _
            "FROM [Адресная программа$" & objCurRegion.Address(False, False) & "] " & _
            "WHERE NOT Наименование IS NULL ORDER BY Наименование" _
        )
    
    Set objRecordSet2 = objConnection.Execute( _
            "SELECT Наименование, Ячейки, Количество " & _
            "FROM [Адресная программа$" & objCurRegion.Address(False, False) & "] " & _
            "WHERE NOT Наименование IS NULL ORDER BY Наименование, Ячейки" _
        )
    
    objRecordSet1.MoveFirst
    
    Set objWorksheet = ThisWorkbook.Worksheets.Add()
    Set objRange = objWorksheet.Range("A1")
    
    Do Until objRecordSet1.EOF
        Set objCurRegion = objRange
        objRange.Value = objRecordSet1.Fields.Item("Наименование").Value
        
        With objRecordSet2
            .Filter = "Наименование='" & objRecordSet1.Fields.Item("Наименование").Value & "'"
            
            Do Until .EOF
                With .Fields
                    objRange.Offset(0, 1).Value = .Item("Ячейки").Value
                    objRange.Offset(0, 2).Value = .Item("Количество").Value
                End With
                
                .MoveNext
                
                Set objCurRegion = Union(objCurRegion, objRange, objRange.Offset(0, 1), objRange.Offset(0, 2))
                Set objRange = objRange.Offset(1, 0)
            Loop
        End With
        
        With objCurRegion.Borders
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        
        With objCurRegion.Columns.Item(1)
            .Merge
            
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
        
        objRecordSet1.MoveNext
        
        Set objRange = objRange.Offset(1, 0)
    Loop
    
    objWorksheet.Columns("A:C").AutoFit
    
    Set objRange = Nothing
    Set objCurRegion = Nothing
    Set objWorksheet = Nothing
    
    objRecordSet2.Close
    objRecordSet1.Close
    
    objConnection.Close
    
    Set objRecordSet2 = Nothing
    Set objRecordSet1 = Nothing
    
    Set objConnection = Nothing
End Sub

Отправлено: 17:31, 27-01-2015 | #24


Пользователь


Сообщения: 63
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg test.jpg
(89.6 Kb, 3 просмотров)

Iska, Хорошо, будь другом, подскажи если знаешь, как сделать, надо закрасить ячейки на против цифр, причем диапазон цифр может меняться, нужна процедура, при нажатии на кнопку он просматривал столбец находил цифру 1 и закрашивал рядом стоящую ячейку

-------
Человек человеку - друг, а зомби зомби - зомби


Отправлено: 10:19, 28-01-2015 | #25


Пользователь


Сообщения: 63
Благодарности: 6

Профиль | Отправить PM | Цитировать


У же не надо, сам решил, спасибо)

-------
Человек человеку - друг, а зомби зомби - зомби


Отправлено: 11:15, 28-01-2015 | #26


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата dyshes90:
У же не надо, сам решил, спасибо) »
Это хорошо, потому как я ничего толком не понял .

Отправлено: 13:06, 28-01-2015 | #27



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Создание макроса для поиска одинаковых значений в ячейках и укомплектовывания

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - EXCEL - поиск одинаковых значений в ячейках eva.k Microsoft Office (Word, Excel, Outlook и т.д.) 6 07-02-2014 14:33
2010 - [решено] Формулы не считают при изменении значений в ячейках 81ruslan81 Microsoft Office (Word, Excel, Outlook и т.д.) 4 24-12-2012 18:39
2007 - [решено] Excel - Проверка значений в ячейках vlad20 Microsoft Office (Word, Excel, Outlook и т.д.) 7 25-06-2012 20:53
Поиск одинаковых значений в одной таблице MySQL blackmane Вебмастеру 1 01-04-2012 14:27
2003/XP/2000 - Excel: Проверка значений в ячейках (как лучше сделать) ondo Microsoft Office (Word, Excel, Outlook и т.д.) 2 09-11-2010 01:46




 
Переход