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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2018, 22:37   #1
Denimalecki
 
Регистрация: 16.11.2018
Сообщений: 3
Вопрос Группировка информации

Возникла проблема следующего рода. Проще будет объяснить на примере.
В столбце А у меня следующие данные:

Mazda
BMW
Porshe
Mersedes
Ford
и т.д.

В столбце В в произвольном порядке написано следующее:

Синяя Mazda
Купить Mersedes
Ford в рассрочку
Mazda 2018 года
и т.д.

Вопрос такой: Как сгруппировать эту информацию? Т.е. чтобы вытащить к примеру на соседний лист из колонки А Mazda, а в соседнем столбце перечислить уже словосочетания относящиеся к Mazda и аналогичным образом проделать все с остальными марками. Не представляю как этот процесс оптимизировать в Excel. Данных очень много, в ручную сделать невозможно. Столбец A только более 8000 строк и его нужно сопоставить с данными из столбца В в котором более 36000 строк. Буду рад предложенным идеям, может мне неизвестны какие-нибудь возможности Excel, позволяющие проделать это.
Denimalecki вне форума Ответить с цитированием
Старый 16.11.2018, 22:53   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

файл выложите, чтобы не придумывать ничего
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.11.2018, 23:23   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В ст. С вытащить марку из словосочетаний
Код:
=ПРОСМОТР(2;1/ПОИСК($A$1:$A$5;B1);$A$1:$A$5)
Вместо "5" - фактическая последняя занятая строка ст. А. Скопировать - вставить как значения, отсортировать по этому столбцу.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 17.11.2018, 18:45   #4
Denimalecki
 
Регистрация: 16.11.2018
Сообщений: 3
По умолчанию пример

В приложении добавил файл, сокращен для минимума для удобства. На первом листе исходные данные, а на втором то к чему мне необходимо прийти.
Вложения
Тип файла: xlsx Пример.xlsx (10.2 Кб, 7 просмотров)
Denimalecki вне форума Ответить с цитированием
Старый 17.11.2018, 18:57   #5
Denimalecki
 
Регистрация: 16.11.2018
Сообщений: 3
По умолчанию

Пытался разобрать, предложенный вами вариант. Смотрел механизм работы функции ПРОСМОТР и ПОИСК, но что-то все равно плаваю, остались белые пятна.

=ПОИСК(нужный_текст;анализируемый_т екст; )

Искомый текст. Это числовая и буквенная комбинация, позицию которой требуется найти.

Анализируемый текст. Это тот фрагмент текстовой информации, из которого требуется вычленить искомую букву или сочетание и вернуть позицию.

1/ПОИСК($A$1:$A$5;B1) - В силу описания этой функции, которое выше указал, не могу понять к чему приведет такая команда. Можете объяснить?
Denimalecki вне форума Ответить с цитированием
Старый 18.11.2018, 13:19   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Пробуйте макрос, он в т.ч. использует эту формулу. Изначально ст. С должен быть пустым.
Код:
Sub De()
Dim n&
  If WorksheetFunction.CountA(Range("C:C")) = 0 Then 'столбец пустой, вставляем формулу
    With Range("C1:C" & Cells(Rows.Count, "B").End(xlUp).Row)
      .Formula = Replace("=LOOKUP(2,1/SEARCH($A$1:$A$@,B1),$A$1:$A$@)" _
        , "@", Cells(Rows.Count, "A").End(xlUp).Row)
      .Value = .Value
    End With
  End If
  If WorksheetFunction.CountIf(Range("C:C"), CVErr(xlErrNA)) Then 'есть #Н/Д
    With Range("B1", Cells(Rows.Count, "C").End(xlUp))
      .Sort .Columns(2), xlDescending, Header:=xlNo
    End With
    Range("C1").Select
    MsgBox "Некоторые словосочетания не распознаны." & vbLf & _
      "Впишите их вручную и запустите макрос снова", vbExclamation
    Exit Sub
  End If
  Application.ScreenUpdating = False
  With Range("B1", Cells(Rows.Count, "C").End(xlUp))
    .Sort .Columns(2), xlAscending, Header:=xlNo
    For n = .Rows.Count To 2 Step -1
      If .Cells(n, 2) = .Cells(n - 1, 2) Then
        .Cells(n, 2) = Empty
      Else
        Rows(n).Insert
      End If
    Next
  End With
  Range("C:C").Cut Range("A1")
  Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip Пример112.zip (15.7 Кб, 7 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 18.11.2018 в 13:23.
Казанский вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
группировка Iskin Microsoft Office Excel 4 26.12.2011 11:21
ФЗ «Об информации, информационных технологиях и о защите информации» Virtson Свободное общение 2 08.07.2010 18:13
ввод информации с клавиутуры в двумерный масив, запись информации с масива в файл x_omega_x Помощь студентам 1 29.12.2008 02:30
группировка Мингиян Microsoft Office Excel 2 23.04.2008 23:43