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

Вход

Регистрация

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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Извлечение уникальных значений из столбца
rotten41 Дата: Суббота, 03.06.2017, 20:34 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер, форумчане
Помогите с формулой.

В столбец C9:C11 вписан текст.
Текст выглядит так. В первой ячейке "Два+Четыре+Семь". Во второй ячейке "Четыре+Восемь". В третьей ячейке "Семь+Восемь".

Как заставить формулой - в желтый столбец построчно извлечь слова Два, Четыре, Семь, Восемь (учитывается, что в исходном столбце - слова Семь, Четыре, Восемь - повторяется по два раза).
Разделитель слов - это знак "+"
К сообщению приложен файл: 768649.xls (29.5 Kb)
 
Ответить
СообщениеДобрый вечер, форумчане
Помогите с формулой.

В столбец C9:C11 вписан текст.
Текст выглядит так. В первой ячейке "Два+Четыре+Семь". Во второй ячейке "Четыре+Восемь". В третьей ячейке "Семь+Восемь".

Как заставить формулой - в желтый столбец построчно извлечь слова Два, Четыре, Семь, Восемь (учитывается, что в исходном столбце - слова Семь, Четыре, Восемь - повторяется по два раза).
Разделитель слов - это знак "+"

Автор - rotten41
Дата добавления - 03.06.2017 в 20:34
Sandor Дата: Суббота, 03.06.2017, 22:11 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
Цитата
В желтый столбец - должны построчно извлечься слова Два, Четыре, Семь, Восемь (потому что Семь, Четыре, Восемь - повторяется по два раза,)

а ДВА почему? не пойму логики)))
 
Ответить
Сообщение
Цитата
В желтый столбец - должны построчно извлечься слова Два, Четыре, Семь, Восемь (потому что Семь, Четыре, Восемь - повторяется по два раза,)

а ДВА почему? не пойму логики)))

Автор - Sandor
Дата добавления - 03.06.2017 в 22:11
rotten41 Дата: Воскресенье, 04.06.2017, 08:40 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
а ДВА почему?

Ну посмотрите сами. В столбце C9:C11 слово "семь" - находится в ячейке C9 и в ячейке C11.
То есть - встречается дважды.
И это слово - извлекается в желтый столбец - как показано в файле.
 
Ответить
Сообщение
а ДВА почему?

Ну посмотрите сами. В столбце C9:C11 слово "семь" - находится в ячейке C9 и в ячейке C11.
То есть - встречается дважды.
И это слово - извлекается в желтый столбец - как показано в файле.

Автор - rotten41
Дата добавления - 04.06.2017 в 08:40
Sandor Дата: Воскресенье, 04.06.2017, 10:53 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
если речь идет об извлечении исключительно уникальных имен, то это одно.
а когда используете логическую конструкцию "потому что", то начинаешь полагать, что извлекают их именно потому, что они дважды встречаются.)))

А просто уникальные слова извлекаются просто))
сначала извлекаете все слова, используя разделительный символ
а потом на вкладке Данные - Удалить Дубликаты
 
Ответить
Сообщениеесли речь идет об извлечении исключительно уникальных имен, то это одно.
а когда используете логическую конструкцию "потому что", то начинаешь полагать, что извлекают их именно потому, что они дважды встречаются.)))

А просто уникальные слова извлекаются просто))
сначала извлекаете все слова, используя разделительный символ
а потом на вкладке Данные - Удалить Дубликаты

Автор - Sandor
Дата добавления - 04.06.2017 в 10:53
rotten41 Дата: Воскресенье, 04.06.2017, 11:40 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А просто уникальные слова извлекаются просто))
сначала извлекаете все слова, используя разделительный символ
а потом на вкладке Данные - Удалить Дубликаты

Вы можете пример подобной формулы привести?


Сообщение отредактировал rotten41 - Воскресенье, 04.06.2017, 11:40
 
Ответить
Сообщение
А просто уникальные слова извлекаются просто))
сначала извлекаете все слова, используя разделительный символ
а потом на вкладке Данные - Удалить Дубликаты

Вы можете пример подобной формулы привести?

Автор - rotten41
Дата добавления - 04.06.2017 в 11:40
Pelena Дата: Воскресенье, 04.06.2017, 12:28 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19510
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
Вы можете пример подобной формулы привести?

Sandor, присоединяюсь к вопросу. А то, я смотрю, опять пустословием занимаетесь


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Вы можете пример подобной формулы привести?

Sandor, присоединяюсь к вопросу. А то, я смотрю, опять пустословием занимаетесь

Автор - Pelena
Дата добавления - 04.06.2017 в 12:28
gling Дата: Воскресенье, 04.06.2017, 14:21 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2640
Репутация: 737 ±
Замечаний: 0% ±

2010
Здравствуйте. Что то "на химичел" не знаю разберетесь ли. Завтра наверно сам не разберусь. Вроде работает, но с доп столбцами и именованными формулами в Диспетчере имен.
К сообщению приложен файл: 3287131.xls (34.5 Kb)


ЯД-41001506838083
 
Ответить
СообщениеЗдравствуйте. Что то "на химичел" не знаю разберетесь ли. Завтра наверно сам не разберусь. Вроде работает, но с доп столбцами и именованными формулами в Диспетчере имен.

Автор - gling
Дата добавления - 04.06.2017 в 14:21
Sandor Дата: Воскресенье, 04.06.2017, 15:28 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
Цитата
Вы можете пример подобной формулы привести?

Формулы? а как в формуле описать действия? нажать вкладку Данные, нажать - удалить дубликаты...
да даже если и можно придумать такую формулу, то зачем? очевидно же, что это не рационально.
Никто же не пытается , например, всю бухгалтерию запихнуть в одну формулу. Есть интерфейс самой Excel, вполне развитой. Не всегда нужно его формулами подменять.
Если прям хочется автоматизировать, то я бы так предложил

[vba]
Код
Sub uspok_pelenu()
ch = "+"   ' ñèìâîë ðàçäåëåíèÿ, åãî èùåì
m = 9
For i = 9 To 11                'ðàçáèâàåì íà ñëîâà
ms = Cells(i, 3).Value
n3 = Len(ms)
n2 = 1
For n = 0 To 3    ' èñõîäèì èç ïðåäïîëîæåíèÿ, ÷òî çíà÷èìûõ ñëîâ â ñòðîêåì íå áîëåå 4,  òîïèêñòàðòåð íå îïèñàë â óñëîâèÿõ
n1 = InStr(n2, ms, ch)   '   InStr([start, ]string1, string2[, compare])
If (n1 <= n2) Then GoTo line1:
ms3 = Mid(ms, n2, n1 - n2)         ' âûòàñêèâàåì òåêñò ñ ïîçèöèè n2 äëèíîé n1-n2
Cells(m, 5).Value = ms3
n2 = n1 + 1
m = m + 1
Next n
line1:
ms3 = Mid(ms, n2, n3 - n2 + 1)       ' ïðîïèñûâàåì îñòàòîê îò ñòðîêè
Cells(m, 5).Value = ms3
m = m + 1

Next i
        'çàêîí÷èëè ðàçáèâêó ñëîâ
nB = WorksheetFunction.CountA(Range("E:E")) + 4  ' ñ÷èòàåò íåïóñòûå ñòðîêè, c ïîïðàâêîé íà âíåñåííûå ðóêàìè ÒÑ èñêàæåíèÿ
ms2 = "$E$9:$E$" & nB
Range(ms2).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
[/vba]

с русскими буквами тут комменты как-то плывут. Но в файле нормально
К сообщению приложен файл: 768649-1.xls (38.0 Kb)


Сообщение отредактировал Sandor - Воскресенье, 04.06.2017, 15:30
 
Ответить
Сообщение
Цитата
Вы можете пример подобной формулы привести?

Формулы? а как в формуле описать действия? нажать вкладку Данные, нажать - удалить дубликаты...
да даже если и можно придумать такую формулу, то зачем? очевидно же, что это не рационально.
Никто же не пытается , например, всю бухгалтерию запихнуть в одну формулу. Есть интерфейс самой Excel, вполне развитой. Не всегда нужно его формулами подменять.
Если прям хочется автоматизировать, то я бы так предложил

[vba]
Код
Sub uspok_pelenu()
ch = "+"   ' ñèìâîë ðàçäåëåíèÿ, åãî èùåì
m = 9
For i = 9 To 11                'ðàçáèâàåì íà ñëîâà
ms = Cells(i, 3).Value
n3 = Len(ms)
n2 = 1
For n = 0 To 3    ' èñõîäèì èç ïðåäïîëîæåíèÿ, ÷òî çíà÷èìûõ ñëîâ â ñòðîêåì íå áîëåå 4,  òîïèêñòàðòåð íå îïèñàë â óñëîâèÿõ
n1 = InStr(n2, ms, ch)   '   InStr([start, ]string1, string2[, compare])
If (n1 <= n2) Then GoTo line1:
ms3 = Mid(ms, n2, n1 - n2)         ' âûòàñêèâàåì òåêñò ñ ïîçèöèè n2 äëèíîé n1-n2
Cells(m, 5).Value = ms3
n2 = n1 + 1
m = m + 1
Next n
line1:
ms3 = Mid(ms, n2, n3 - n2 + 1)       ' ïðîïèñûâàåì îñòàòîê îò ñòðîêè
Cells(m, 5).Value = ms3
m = m + 1

Next i
        'çàêîí÷èëè ðàçáèâêó ñëîâ
nB = WorksheetFunction.CountA(Range("E:E")) + 4  ' ñ÷èòàåò íåïóñòûå ñòðîêè, c ïîïðàâêîé íà âíåñåííûå ðóêàìè ÒÑ èñêàæåíèÿ
ms2 = "$E$9:$E$" & nB
Range(ms2).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
[/vba]

с русскими буквами тут комменты как-то плывут. Но в файле нормально

Автор - Sandor
Дата добавления - 04.06.2017 в 15:28
rotten41 Дата: Воскресенье, 04.06.2017, 15:46 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
gling, не работает.
Ввел в ячейку C17 - текст "Девять+Шесть+Десять" - слова "Шесть" и "Десять" - в желтом столбце не отобразились
Удалил из главного столбца - все значения кроме первого "Два+Четыре+Семь". По идее - в желтый столбец должен был вывестись результат "Два","Четыре", "Шесть" - построчно. Но там выводится только значение "Два".
К сообщению приложен файл: 3509243.xls (34.0 Kb)
 
Ответить
Сообщениеgling, не работает.
Ввел в ячейку C17 - текст "Девять+Шесть+Десять" - слова "Шесть" и "Десять" - в желтом столбце не отобразились
Удалил из главного столбца - все значения кроме первого "Два+Четыре+Семь". По идее - в желтый столбец должен был вывестись результат "Два","Четыре", "Шесть" - построчно. Но там выводится только значение "Два".

Автор - rotten41
Дата добавления - 04.06.2017 в 15:46
rotten41 Дата: Воскресенье, 04.06.2017, 15:48 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Sandor, я спрашивал про формулу, а не про макрос.
 
Ответить
СообщениеSandor, я спрашивал про формулу, а не про макрос.

Автор - rotten41
Дата добавления - 04.06.2017 в 15:48
Nic70y Дата: Воскресенье, 04.06.2017, 16:21 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 9130
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
тоже с допами.

что бы я случайно не "выразился"
не предлагайте пжл
Код
СТРОКА(E2)-ПОИСКПОЗ(E9;E$9:E9;)
заменить на счётесли %)
К сообщению приложен файл: 8031107.xls (33.0 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениетоже с допами.

что бы я случайно не "выразился"
не предлагайте пжл
Код
СТРОКА(E2)-ПОИСКПОЗ(E9;E$9:E9;)
заменить на счётесли %)

Автор - Nic70y
Дата добавления - 04.06.2017 в 16:21
rotten41 Дата: Воскресенье, 04.06.2017, 16:48 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 163
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, работает.
Большое спасибо.
 
Ответить
СообщениеNic70y, работает.
Большое спасибо.

Автор - rotten41
Дата добавления - 04.06.2017 в 16:48
gling Дата: Воскресенье, 04.06.2017, 17:28 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2640
Репутация: 737 ±
Замечаний: 0% ±

2010
gling, не работает.

Да gling пусть не работает, но формула то работает. В примере между данными не было пустых ячеек, по этому и не предполагалось, что между текстами будут пустые ячейки. С пустыми ячейками нужно искать немного другое решение. В старом файле немного подправил формулу в ДиспИмен, закралась ошибка.
К сообщению приложен файл: 6428052.xls (34.5 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Воскресенье, 04.06.2017, 17:50
 
Ответить
Сообщение
gling, не работает.

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

Автор - gling
Дата добавления - 04.06.2017 в 17:28
vikttur Дата: Воскресенье, 04.06.2017, 18:53 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Код
=ЕСЛИ(E1="";"";ИНДЕКС(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50));
ЦЕЛОЕ(МИН(ЕСЛИ(1-СЧЁТЕСЛИ($E$1:E1;СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50)));СТРОКА($C$9:$C$15)-8+СТОЛБЕЦ(A:C)%)));
ПРАВБ(МИН(ЕСЛИ(1-СЧЁТЕСЛИ($E$1:E1;СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50)));СТРОКА($C$9:$C$15)-8+СТОЛБЕЦ(A:C)%));2)))

Вот такая, введенная как формула массива, покажет уникальные значения из диапазона текстов. НО! Нашел ошибку: только для текстов с одинаковым количеством слов. Нужно добавить два больших фрагмента, чтобы это условие не влияло на работу формулы.
В Excel-2003 работать не будет - уровней вложенности много.

Та же , но с доработкой. Фрагмент вынесен в именованный диапазон. Эта тоже формула массива.
Код
=ИНДЕКС(слова;
ЦЕЛОЕ(МИН(ЕСЛИ(слова<>"";ЕСЛИ(1-СЧЁТЕСЛИ($F$1:F1;слова);СТРОКА($C$8:$C$15)-7+СТОЛБЕЦ(A:C)%))));
ПРАВБ(МИН(ЕСЛИ(слова<>"";ЕСЛИ(1-СЧЁТЕСЛИ($F$1:F1;слова);СТРОКА($C$8:$C$15)-7+СТОЛБЕЦ(A:C)%)));2))

Имя слова:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&Лист1!$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(Лист1!$A:$C)*50;50))
[color=red][b]


Код
СТОЛБЕЦ(Лист1!$A:$C)

Эта функция отвечает за максимальное количество слов в одном тексте. Можно, например
Код
СТОЛБЕЦ(Лист1!$A:$F)

Внешне ничего не поменяется, но будет больше считать.
К сообщению приложен файл: 9468572.xlsx (12.5 Kb) · 5281946.xlsx (12.6 Kb)


Сообщение отредактировал vikttur - Воскресенье, 04.06.2017, 19:28
 
Ответить
Сообщение
Код
=ЕСЛИ(E1="";"";ИНДЕКС(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50));
ЦЕЛОЕ(МИН(ЕСЛИ(1-СЧЁТЕСЛИ($E$1:E1;СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50)));СТРОКА($C$9:$C$15)-8+СТОЛБЕЦ(A:C)%)));
ПРАВБ(МИН(ЕСЛИ(1-СЧЁТЕСЛИ($E$1:E1;СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(A:C)*50;50)));СТРОКА($C$9:$C$15)-8+СТОЛБЕЦ(A:C)%));2)))

Вот такая, введенная как формула массива, покажет уникальные значения из диапазона текстов. НО! Нашел ошибку: только для текстов с одинаковым количеством слов. Нужно добавить два больших фрагмента, чтобы это условие не влияло на работу формулы.
В Excel-2003 работать не будет - уровней вложенности много.

Та же , но с доработкой. Фрагмент вынесен в именованный диапазон. Эта тоже формула массива.
Код
=ИНДЕКС(слова;
ЦЕЛОЕ(МИН(ЕСЛИ(слова<>"";ЕСЛИ(1-СЧЁТЕСЛИ($F$1:F1;слова);СТРОКА($C$8:$C$15)-7+СТОЛБЕЦ(A:C)%))));
ПРАВБ(МИН(ЕСЛИ(слова<>"";ЕСЛИ(1-СЧЁТЕСЛИ($F$1:F1;слова);СТРОКА($C$8:$C$15)-7+СТОЛБЕЦ(A:C)%)));2))

Имя слова:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("+"&Лист1!$C$9:$C$15;"+";ПОВТОР(" ";50));СТОЛБЕЦ(Лист1!$A:$C)*50;50))
[color=red][b]


Код
СТОЛБЕЦ(Лист1!$A:$C)

Эта функция отвечает за максимальное количество слов в одном тексте. Можно, например
Код
СТОЛБЕЦ(Лист1!$A:$F)

Внешне ничего не поменяется, но будет больше считать.

Автор - vikttur
Дата добавления - 04.06.2017 в 18:53
Светлый Дата: Вторник, 06.06.2017, 22:49 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1867
Репутация: 536 ±
Замечаний: 0% ±

Excel 2013, 2016
Ещё один вариант (файл не оригинальный):
Код
=ЕСЛИОШИБКА(ИНДЕКС(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));МИН(ЕСЛИ(ЕСЛИ(ЕНД(ПОИСКПОЗ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));D$1:D1;));СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));"")<>"";СТРОКА($9:$79)))-8);"")
К сообщению приложен файл: UniWord.xlsx (12.0 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеЕщё один вариант (файл не оригинальный):
Код
=ЕСЛИОШИБКА(ИНДЕКС(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));МИН(ЕСЛИ(ЕСЛИ(ЕНД(ПОИСКПОЗ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));D$1:D1;));СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(Т(СМЕЩ(B$2;СТРОКА($9:$79)/9;));"+";ПОВТОР(" ";20));ОСТАТ(СТРОКА($9:$79);9)*20+1;20));"")<>"";СТРОКА($9:$79)))-8);"")

Автор - Светлый
Дата добавления - 06.06.2017 в 22:49
  • Страница 1 из 1
  • 1
Поиск:

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