Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск частично одинаковых значений в столбце и ... - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Поиск частично одинаковых значений в столбце и ...
Роман Дата: Вторник, 13.11.2012, 14:52 | Сообщение № 1
Группа: Гости
Поиск частично одинаковых значений в столбце и последующее транспонирование только тех что имеют совпадения..

Пример:
Есть столбец
123_1
123_2
123_3
345_1
345_1
567_1
888_1
Надо чтобы стало так
123_1;123_2;123_3
345_1;345_1
567_1
888_1

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

Пример:
Есть столбец
123_1
123_2
123_3
345_1
345_1
567_1
888_1
Надо чтобы стало так
123_1;123_2;123_3
345_1;345_1
567_1
888_1

Кто подскажет, просто столбец очень длинный, вручную никак..

Автор - Роман
Дата добавления - 13.11.2012 в 14:52
amur84 Дата: Вторник, 13.11.2012, 17:54 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 8 ±
Замечаний: 0% ±

Если "частично одинаковых значений в столбце" не очень много, то можно попробовать "Автофильтр" по текстовому условию "Начинается с ..". Далее выделяем оставшиеся ячейки и транспонируем. Это только в 2007 и выше. В 2003 не реализован автофильтр по текстовому условию.

Хотя, если значения идут подряд - то смысла в автофильтре нет...


Новый день. А что успел сделать ты?

Сообщение отредактировал amur84 - Вторник, 13.11.2012, 17:56
 
Ответить
СообщениеЕсли "частично одинаковых значений в столбце" не очень много, то можно попробовать "Автофильтр" по текстовому условию "Начинается с ..". Далее выделяем оставшиеся ячейки и транспонируем. Это только в 2007 и выше. В 2003 не реализован автофильтр по текстовому условию.

Хотя, если значения идут подряд - то смысла в автофильтре нет...

Автор - amur84
Дата добавления - 13.11.2012 в 17:54
Hugo Дата: Вторник, 13.11.2012, 18:10 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Я бы делал так (чтоб макрос не писать):
1. вытянул фомулой в столбец строки-критерии - т.е. часть до "_"
2. отобрал из них в столбец уникальные
3. с помощью UDF vlookupcouple()
http://www.planetaexcel.ru/forum.php?thread_id=45721
на основе этих двух столбцов в третьем получил результат.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ бы делал так (чтоб макрос не писать):
1. вытянул фомулой в столбец строки-критерии - т.е. часть до "_"
2. отобрал из них в столбец уникальные
3. с помощью UDF vlookupcouple()
http://www.planetaexcel.ru/forum.php?thread_id=45721
на основе этих двух столбцов в третьем получил результат.

Автор - Hugo
Дата добавления - 13.11.2012 в 18:10
Pelena Дата: Вторник, 13.11.2012, 18:30 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19518
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Quote (amur84)
В 2003 не реализован автофильтр по текстовому условию

Почему же? Реализован через вариант УСЛОВИЕ


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Quote (amur84)
В 2003 не реализован автофильтр по текстовому условию

Почему же? Реализован через вариант УСЛОВИЕ

Автор - Pelena
Дата добавления - 13.11.2012 в 18:30
alex77755 Дата: Вторник, 13.11.2012, 18:34 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

А я бы макросом вкупе со словарём


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеА я бы макросом вкупе со словарём

Автор - alex77755
Дата добавления - 13.11.2012 в 18:34
alex77755 Дата: Вторник, 13.11.2012, 18:36 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

А если это надо делать часто - вынес бы в пользовательскую функцию


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеА если это надо делать часто - вынес бы в пользовательскую функцию

Автор - alex77755
Дата добавления - 13.11.2012 в 18:36
Hugo Дата: Вторник, 13.11.2012, 18:41 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3854
Репутация: 814 ±
Замечаний: 0% ±

365
Да, можно словарь по первой части, и каждому ключу в Item коллекцию его значений (хотя можно и сразу в Item собирать итоговую строку).
Потом в конце всеё сливаем в строку через разделитель.
Ну а если UDF под задачу, то вообще элементарно - если начало просматриваемой ячейки и критерий (который можно извлечь тут же кодом из указанной ячейки) совпадают - собираем строку.

[vba]
Code
Function couple(krit$, r As Range, razd$, sep As String) As String
     Dim el, s$
     couple = ""
     krit$ = Split(krit$, razd, 2)(0)
     For Each el In r.Value
         If Left(el, Len(krit)) = krit Then s = s & sep & el
     Next
     couple = Mid(s, Len(sep) + 1)
End Function
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДа, можно словарь по первой части, и каждому ключу в Item коллекцию его значений (хотя можно и сразу в Item собирать итоговую строку).
Потом в конце всеё сливаем в строку через разделитель.
Ну а если UDF под задачу, то вообще элементарно - если начало просматриваемой ячейки и критерий (который можно извлечь тут же кодом из указанной ячейки) совпадают - собираем строку.

[vba]
Code
Function couple(krit$, r As Range, razd$, sep As String) As String
     Dim el, s$
     couple = ""
     krit$ = Split(krit$, razd, 2)(0)
     For Each el In r.Value
         If Left(el, Len(krit)) = krit Then s = s & sep & el
     Next
     couple = Mid(s, Len(sep) + 1)
End Function
[/vba]

Автор - Hugo
Дата добавления - 13.11.2012 в 18:41
ABC Дата: Вторник, 13.11.2012, 19:10 | Сообщение № 8
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
У меня так получился
[vba]
Code
Sub www()
     Dim arr(), i As Long, it, arr1, m
     arr = Range([A1], Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
     With CreateObject("Scripting.Dictionary")
         For i = LBound(arr, 1) To UBound(arr, 1)
             it = Mid(arr(i, 1), 1, 3)
             .Item(it) = .Item(it) & it & "_" & Mid(arr(i, 1), 5, 1) & ";"
         Next i
         ReDim arr(1 To .Count, 1 To 1)
         i = 1
         For Each it In .Keys
             arr1 = Split(it, "_")
             m = arr1(0) & .Item(it)
             arr(i, 1) = Mid(m, 4, Len(m) - 4)
             i = i + 1
         Next it
     End With
     [b1].Resize(i - 1, 1).Value = arr
End Sub
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
СообщениеУ меня так получился
[vba]
Code
Sub www()
     Dim arr(), i As Long, it, arr1, m
     arr = Range([A1], Cells(Rows.Count, 1).End(xlUp).Offset(0, 1)).Value
     With CreateObject("Scripting.Dictionary")
         For i = LBound(arr, 1) To UBound(arr, 1)
             it = Mid(arr(i, 1), 1, 3)
             .Item(it) = .Item(it) & it & "_" & Mid(arr(i, 1), 5, 1) & ";"
         Next i
         ReDim arr(1 To .Count, 1 To 1)
         i = 1
         For Each it In .Keys
             arr1 = Split(it, "_")
             m = arr1(0) & .Item(it)
             arr(i, 1) = Mid(m, 4, Len(m) - 4)
             i = i + 1
         Next it
     End With
     [b1].Resize(i - 1, 1).Value = arr
End Sub
[/vba]

Автор - ABC
Дата добавления - 13.11.2012 в 19:10
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!