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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск данных в столбце, и вывод найденных значений в ячейку.
AnatolyZhilichev Дата: Четверг, 10.10.2013, 06:56 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Коллеги!
Прошу Вашей помощи в написании формулы (диапазон ячеек А1:G2-пример во вложении), цель которой проанализировать состав нижестоящего столбика и вывести значения в ячейку по определенному условию.

строка А1-в эти ячейки требуется выводить буквы найденные в столбце (через делитель, если буквы не одинаковые), по порядку (сверху вниз столбика). Уже найденные значения в ячейку не подтягиваются (т.е. повторений букв в ячейке нет)
строка А2-в эти ячейки требуется выводить цифры найденные в столбце (через делитель, если цифры не одинаковые), по порядку (сверху вниз столбика). Уже найденные значения в ячейку не подтягиваются (т.е. повторений цифр в ячейке нет)

С уважением!
К сообщению приложен файл: 1040818.xlsx (12.2 Kb)
 
Ответить
СообщениеКоллеги!
Прошу Вашей помощи в написании формулы (диапазон ячеек А1:G2-пример во вложении), цель которой проанализировать состав нижестоящего столбика и вывести значения в ячейку по определенному условию.

строка А1-в эти ячейки требуется выводить буквы найденные в столбце (через делитель, если буквы не одинаковые), по порядку (сверху вниз столбика). Уже найденные значения в ячейку не подтягиваются (т.е. повторений букв в ячейке нет)
строка А2-в эти ячейки требуется выводить цифры найденные в столбце (через делитель, если цифры не одинаковые), по порядку (сверху вниз столбика). Уже найденные значения в ячейку не подтягиваются (т.е. повторений цифр в ячейке нет)

С уважением!

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 06:56
Michael_S Дата: Четверг, 10.10.2013, 07:08 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Для формул эта задача практически не решаема.
Если уж быть точным - решение формулами возможно, но очень громоздко, имеет кучу ограничений и "неповоротливо".
Здесь нужен макрос.
 
Ответить
СообщениеДля формул эта задача практически не решаема.
Если уж быть точным - решение формулами возможно, но очень громоздко, имеет кучу ограничений и "неповоротливо".
Здесь нужен макрос.

Автор - Michael_S
Дата добавления - 10.10.2013 в 07:08
AnatolyZhilichev Дата: Четверг, 10.10.2013, 07:41 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В формула-то я хоть чего-нибудь понимаю..... :(
 
Ответить
СообщениеВ формула-то я хоть чего-нибудь понимаю..... :(

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 07:41
Michael_S Дата: Четверг, 10.10.2013, 08:05 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Основная проблема в том, что формула не может вывести в одну ячейку несколько, заранее неизвестных значений из разных ячеек.
В файле примере, надеюсь, проблема будет понятна.
Сколько значений сцепляем, столько нужно и проверок ЕСЛИ...
К сообщению приложен файл: For_Anatol_Exam.xlsx (13.6 Kb)
 
Ответить
СообщениеОсновная проблема в том, что формула не может вывести в одну ячейку несколько, заранее неизвестных значений из разных ячеек.
В файле примере, надеюсь, проблема будет понятна.
Сколько значений сцепляем, столько нужно и проверок ЕСЛИ...

Автор - Michael_S
Дата добавления - 10.10.2013 в 08:05
AnatolyZhilichev Дата: Четверг, 10.10.2013, 10:51 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А существует возможность из столбика из всех повторяющихся значений выбрать все значения (разные по сути а,б,с) и допустим раскидать их по стольки ячейкам, сколько разных значений...а далее применить формулу =A2&ЕСЛИ(A3="";"";"/"&A3)&ЕСЛИ(A4="";"";"/"&A4), для уже известных нам ячеек?
 
Ответить
СообщениеА существует возможность из столбика из всех повторяющихся значений выбрать все значения (разные по сути а,б,с) и допустим раскидать их по стольки ячейкам, сколько разных значений...а далее применить формулу =A2&ЕСЛИ(A3="";"";"/"&A3)&ЕСЛИ(A4="";"";"/"&A4), для уже известных нам ячеек?

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 10:51
Michael_S Дата: Четверг, 10.10.2013, 11:24 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
По разным ячейкам можно. Их число чем ни будь ограниченно, или как? Поскольку присутствуют данные типа с50 и нужно отдельно "с" и "50", то скорее всего, потребуется доп. столбец, а может и два - сначала разделить текст и числа, потом выбрать уникальные. А уже из уникальных собрать в одну ячейку. Но последняя формула, если число уникальных велико - будет достаточно громоздкая, хоть и не сложная.
 
Ответить
СообщениеПо разным ячейкам можно. Их число чем ни будь ограниченно, или как? Поскольку присутствуют данные типа с50 и нужно отдельно "с" и "50", то скорее всего, потребуется доп. столбец, а может и два - сначала разделить текст и числа, потом выбрать уникальные. А уже из уникальных собрать в одну ячейку. Но последняя формула, если число уникальных велико - будет достаточно громоздкая, хоть и не сложная.

Автор - Michael_S
Дата добавления - 10.10.2013 в 11:24
Hugo Дата: Четверг, 10.10.2013, 11:39 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
UDF нужно писать. Почти формула :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеUDF нужно писать. Почти формула :)

Автор - Hugo
Дата добавления - 10.10.2013 в 11:39
AnatolyZhilichev Дата: Четверг, 10.10.2013, 12:16 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Мы в принципе знаем значение изменяемых букв и цифр....может это хоть как-то упростит задачу?
буквы=с;т;о;п;н
цифры=1-10;50

UDF нужно писать=что это?
 
Ответить
СообщениеМы в принципе знаем значение изменяемых букв и цифр....может это хоть как-то упростит задачу?
буквы=с;т;о;п;н
цифры=1-10;50

UDF нужно писать=что это?

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 12:16
Hugo Дата: Четверг, 10.10.2013, 12:31 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
В модуль:

[vba]
Код
Function AnatolyZhilichev(r As Range, razd As String, numstr As Boolean)
        Dim el, t
        With CreateObject("Scripting.Dictionary"): .comparemode = 1
            For Each el In r.Value
                If Len(Trim(el)) Then
                    t = Analiz(CStr(el), numstr)
                    If Len(t) Then .Item(t) = 0&
                End If
            Next
            AnatolyZhilichev = Join(.keys, razd)
        End With
End Function

Function Analiz(s$, Num As Boolean)
'Предлагаемая функция работает с любым символом разделения (а также, без него), не зависит от количества символов и не имеет никаких циклов.
'Функция имеет 2 аргумента. 1-й - строка или ячейка с исходными данными, 2-й - True для цифр, или False для букв.
        On Error Resume Next
        Dim Patt As String, objRegExp: Set objRegExp = CreateObject("VBScript.RegExp")
        objRegExp.Pattern = IIf(Num, "[\d]{1,100}", "[А-Яа-яЁёA-Za-z ]{1,100}"): objRegExp.Global = True
        Analiz = objRegExp.Execute(s).Item(0)
        On Error GoTo 0
End Function
[/vba]
На лист в ячейку:
Код
=AnatolyZhilichev(G3:G28,"/",0)
и
Код
=AnatolyZhilichev(G12:G28,"/",1)

В зависимости от анг/рус использовать "," или ";"
С названием UDF решил голову не ломать :)
Что такое UDF - User Defined Function, см. в конце http://www.planetaexcel.ru/techniques/3/59/


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеВ модуль:

[vba]
Код
Function AnatolyZhilichev(r As Range, razd As String, numstr As Boolean)
        Dim el, t
        With CreateObject("Scripting.Dictionary"): .comparemode = 1
            For Each el In r.Value
                If Len(Trim(el)) Then
                    t = Analiz(CStr(el), numstr)
                    If Len(t) Then .Item(t) = 0&
                End If
            Next
            AnatolyZhilichev = Join(.keys, razd)
        End With
End Function

Function Analiz(s$, Num As Boolean)
'Предлагаемая функция работает с любым символом разделения (а также, без него), не зависит от количества символов и не имеет никаких циклов.
'Функция имеет 2 аргумента. 1-й - строка или ячейка с исходными данными, 2-й - True для цифр, или False для букв.
        On Error Resume Next
        Dim Patt As String, objRegExp: Set objRegExp = CreateObject("VBScript.RegExp")
        objRegExp.Pattern = IIf(Num, "[\d]{1,100}", "[А-Яа-яЁёA-Za-z ]{1,100}"): objRegExp.Global = True
        Analiz = objRegExp.Execute(s).Item(0)
        On Error GoTo 0
End Function
[/vba]
На лист в ячейку:
Код
=AnatolyZhilichev(G3:G28,"/",0)
и
Код
=AnatolyZhilichev(G12:G28,"/",1)

В зависимости от анг/рус использовать "," или ";"
С названием UDF решил голову не ломать :)
Что такое UDF - User Defined Function, см. в конце http://www.planetaexcel.ru/techniques/3/59/

Автор - Hugo
Дата добавления - 10.10.2013 в 12:31
Poltava Дата: Четверг, 10.10.2013, 12:39 | Сообщение № 10
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Неплохая udf подчеркнул для себя пару интересных моментов.
 
Ответить
СообщениеНеплохая udf подчеркнул для себя пару интересных моментов.

Автор - Poltava
Дата добавления - 10.10.2013 в 12:39
Hugo Дата: Четверг, 10.10.2013, 12:46 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
Ну Analiz я где-то уже давно стянул - только сейчас добавил пропуск ошибок и поменял тип переменной, что работало как мне тут нужно.
Вот зачем там {1,100} - не знаю, нужно изучить. Но раз не мешает -пусть будет :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу Analiz я где-то уже давно стянул - только сейчас добавил пропуск ошибок и поменял тип переменной, что работало как мне тут нужно.
Вот зачем там {1,100} - не знаю, нужно изучить. Но раз не мешает -пусть будет :)

Автор - Hugo
Дата добавления - 10.10.2013 в 12:46
AnatolyZhilichev Дата: Четверг, 10.10.2013, 12:49 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А как udf склеить с уже имеющимся файлом??
К сообщению приложен файл: 1834160-2-__-.xls (67.0 Kb)
 
Ответить
СообщениеА как udf склеить с уже имеющимся файлом??

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 12:49
Hugo Дата: Четверг, 10.10.2013, 12:56 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
Я "склеил" например так:
Код
='1040818H.xls'!AnatolyZhilichev(O$13:O$21,"/",1)
Т.е. код может быть в любом другом открытом в фоне файле. Лучший вариант - Personal.xls/m/b или надстройка. Но тогда будет работать только на этой машине, макросы разрешать не обязательно.
Если код непосредственно в файле - тогда в ячейку писать без указания файла, работать будет всюду, где разрешены макросы.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ "склеил" например так:
Код
='1040818H.xls'!AnatolyZhilichev(O$13:O$21,"/",1)
Т.е. код может быть в любом другом открытом в фоне файле. Лучший вариант - Personal.xls/m/b или надстройка. Но тогда будет работать только на этой машине, макросы разрешать не обязательно.
Если код непосредственно в файле - тогда в ячейку писать без указания файла, работать будет всюду, где разрешены макросы.

Автор - Hugo
Дата добавления - 10.10.2013 в 12:56
AnatolyZhilichev Дата: Четверг, 10.10.2013, 13:11 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Hugo, прошу прощение за свою неосведомленность, но с надстройками, и прописанием кода непосредственно в файле я неознакомлен... :(
Прошу Вас помощи....вставил Ваш UDF в Ctrl+F11 ниже макроса, а что далее менять..застрял. :(
F8=AS9=диапазон вывода информации о занных в нижестоящих столбцах
К сообщению приложен файл: 9228680.xls (70.0 Kb)
 
Ответить
СообщениеHugo, прошу прощение за свою неосведомленность, но с надстройками, и прописанием кода непосредственно в файле я неознакомлен... :(
Прошу Вас помощи....вставил Ваш UDF в Ctrl+F11 ниже макроса, а что далее менять..застрял. :(
F8=AS9=диапазон вывода информации о занных в нижестоящих столбцах

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 13:11
Hugo Дата: Четверг, 10.10.2013, 13:17 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
Нужно сперва добавить в проект стандартный модуль, затем этот код перенести в этот модуль. Из модуля книги или листа работать не будет.
Ну а далее пишем в ячейку как стандартную формулу, можно её выбирать в мастере в разделе "определённые пользователем".
Файл выложить не могу, работа...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНужно сперва добавить в проект стандартный модуль, затем этот код перенести в этот модуль. Из модуля книги или листа работать не будет.
Ну а далее пишем в ячейку как стандартную формулу, можно её выбирать в мастере в разделе "определённые пользователем".
Файл выложить не могу, работа...

Автор - Hugo
Дата добавления - 10.10.2013 в 13:17
Poltava Дата: Четверг, 10.10.2013, 13:18 | Сообщение № 16
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Вот файл
К сообщению приложен файл: Post1310101217.xls (77.0 Kb)
 
Ответить
СообщениеВот файл

Автор - Poltava
Дата добавления - 10.10.2013 в 13:18
Hugo Дата: Четверг, 10.10.2013, 13:24 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
Poltava, спасибо :)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеPoltava, спасибо :)

Автор - Hugo
Дата добавления - 10.10.2013 в 13:24
AnatolyZhilichev Дата: Четверг, 10.10.2013, 13:52 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 40
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
specool КРУТО!!!!!

Не знал, что так можно делать!!!!

СПАСИБО!!!
 
Ответить
Сообщениеspecool КРУТО!!!!!

Не знал, что так можно делать!!!!

СПАСИБО!!!

Автор - AnatolyZhilichev
Дата добавления - 10.10.2013 в 13:52
Hugo Дата: Четверг, 10.10.2013, 13:58 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3731
Репутация: 795 ±
Замечаний: 0% ±

365
Так можно делать почти что угодно :)
Т.е. если формулами сложно или вообще непонятно как сделать - всегда можно неспеша написать нужную простую функцию пользователя.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТак можно делать почти что угодно :)
Т.е. если формулами сложно или вообще непонятно как сделать - всегда можно неспеша написать нужную простую функцию пользователя.

Автор - Hugo
Дата добавления - 10.10.2013 в 13:58
  • Страница 1 из 1
  • 1
Поиск:

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