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

Компьютерный форум 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

 

Ветеран


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

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


a_axe, на мой взгляд — вполне подойдёт. Но подождём мнения автора.

Отправлено: 20:12, 23-01-2015 | #11



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

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


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


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

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


Доброго дня, сводная таблица впр не плохо, я рассматривал этот вариант, но в примере всего 3 ячейки, на деле их будет 16-20, не совсем удобно просматривать данные будет на ней, всетки с моим примером по проще.

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


Отправлено: 10:02, 26-01-2015 | #12


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


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

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


Iska, Есть идеи какие-нибудь, сроки горят, начальство вазилин готовит для меня)

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


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


Ветеран


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

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


dyshes90, я не вижу, чем бы это было неудобно.

Цитата dyshes90:
Iska, Есть идеи какие-нибудь »
Есть. Использовать предложенный вариант со сводной таблицей.

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


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


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

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


Iska, Нет, не катит, вариант не удачный, неудобный для работы. Закрываю тему если мыслей нет.....

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


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


Динохромный


Contributor


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

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


Вложения
Тип файла: xlsx pickpack_Сводная_2.xlsx
(21.1 Kb, 4 просмотров)

Цитата dyshes90:
не совсем удобно просматривать данные будет на ней »
Что именно неудобно и как нужно изменить, чтобы стало удобно?

Цитата dyshes90:
на деле их будет 16-20 »
действительно, к Вам даже просьба была в этой связи:
Цитата Iska:
dyshes90, ну, так покажите какой-нибудь реальный пример. »
Как вариант - можно сделать 26 сводных (бред конечно, но раз возникло расплывчатое слово "удобно") сводных таблиц по одной на каждого смурфика-фиксика в стиле Вашего файла (вообще четких критериев Вы не дали, поэтому совпадение условное) - в приложенном файле зеленые таблички. Сразу говорю, что замучаетесь их обновлять при изменении данных.

Ну и промежуточный (нормальный ) вариант - сделать все же одну сводную таблицу слегка в другой компоновке (в приложенном файле синяя таблица). В ней нажатием на крестик можно разворачивать/сворачивать наименование фильма. Нужна позиция - развернули, не нужна - свернули. Обновлять ее нужно только один раз.

Не зная Ваших критериев, на основании несодержательных и неконкретных комментариев "вариант не удачный, неудобный для работы" вряд ли получится реализовать более вдумчивое решение, потрудитесь хотя бы сказать, что для Вас удобно, что нет. Если нет желания расписывать, что Вы хотите иметь на выходе - мыслей и предложений нет.

Последний раз редактировалось a_axe, 26-01-2015 в 20:16.

Это сообщение посчитали полезным следующие участники:

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


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


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

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


Вложения
Тип файла: zip Копия pickpack1 (2).zip
(15.9 Kb, 6 просмотров)

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

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


Отправлено: 17:39, 26-01-2015 | #17


Ветеран


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

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


dyshes90, мой вариант извлечения — посредством OLE DB (Office 2003):
Код: Выделить весь код
Sub Sample()
    Dim objConnection As Object
    Dim objRecordSet1 As Object
    Dim objRecordSet2 As Object
    
    Dim objCurRegion 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 Наименование, Ячейки" _
        )
    
    Do Until objRecordSet1.EOF
        Debug.Print objRecordSet1.Fields.Item("Наименование").Value
        
        With objRecordSet2
            .Filter = "Наименование='" & objRecordSet1.Fields.Item("Наименование").Value & "'"
            
            Do Until .EOF
                With .Fields
                    Debug.Print vbTab, .Item("Ячейки").Value, vbTab, .Item("Количество").Value
                End With
                
                .MoveNext
            Loop
        End With
        
        objRecordSet1.MoveNext
    Loop
    
    Set objCurRegion = Nothing
    
    objRecordSet2.Close
    objRecordSet1.Close
    
    objConnection.Close
    
    Set objRecordSet2 = Nothing
    Set objRecordSet1 = Nothing
    
    Set objConnection = Nothing
End Sub
Необходимые условия: Рабочая книга должна быть сохранена (обращение идёт именно к файлу Рабочей книги, а не к открытой в Excel Рабочей книге, не к текущим и не сохранённым изменениям); столбец «Ячейки» должен быть заполнен значениями (т.е., не как в первом выложенном Вами варианте).

В коде присутствует жёсткая привязка к адресу — «B2», откуда берётся текущий диапазон для извлечения. Первый запрос («objRecordSet1») извлекает все уникальные Наименования, второй («objRecordSet2») — весь диапазон целиком. Затем происходит вывод второго запроса с группировкой строк по строкам первого запроса. Для упрощения понимания вывод делается в окно отладки («Ctrl-G»), без формирования вывода в ячейки.
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Iska, спасибо!!! Пример в студию please)

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


Отправлено: 11:27, 27-01-2015 | #19


Ветеран


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

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



dyshes90, дык, на Вашем же файле делал. Только дозаполнил по паре отсутствующих значений в столбцах «Ячейки» и «Количество»: Копия pickpack1 (2).7z.

На всякий случай повторюсь: вывод идёт в окно отладки «Immediate», нажмите «Alt-F11», затем «Ctrl-G».

Последний раз редактировалось Iska, 27-01-2015 в 17:32. Причина: Описка


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



Компьютерный форум 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




 
Переход