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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление дубликатов из массива ф-лой или покраска их УФ - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Удаление дубликатов из массива ф-лой или покраска их УФ
Che79 Дата: Понедельник, 02.10.2017, 22:32 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
Всех приветствую!
Вопрос к большому лагерю помогающих на форуме.
Озадачили по работе вопросом извлечения уникальных текстовых данных из массива с одновременным удалением дубликатов в столбцах. Можно ли это сделать формулой? Если нет, то вполне подойдет раскраска дубликатов через УФ. Сам пока в ступоре. Чтобы проще понять вопрос, сделал простой пример с хотелками и комментариями :). То, что должно получиться находится под зелёной чертой. В принципе, можно и макросом - объяснить начальникам что такое макрос и куда нажать, "чтоб оно считало", я смогу.
Заранее спасибо за отклики и поимощь.
К сообщению приложен файл: 777888.xlsx (14.7 Kb)


Делай нормально и будет нормально!
 
Ответить
СообщениеВсех приветствую!
Вопрос к большому лагерю помогающих на форуме.
Озадачили по работе вопросом извлечения уникальных текстовых данных из массива с одновременным удалением дубликатов в столбцах. Можно ли это сделать формулой? Если нет, то вполне подойдет раскраска дубликатов через УФ. Сам пока в ступоре. Чтобы проще понять вопрос, сделал простой пример с хотелками и комментариями :). То, что должно получиться находится под зелёной чертой. В принципе, можно и макросом - объяснить начальникам что такое макрос и куда нажать, "чтоб оно считало", я смогу.
Заранее спасибо за отклики и поимощь.

Автор - Che79
Дата добавления - 02.10.2017 в 22:32
_Boroda_ Дата: Понедельник, 02.10.2017, 22:58 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16881
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
УФ
Код
=(СЧЁТ(ПОИСК(B38;$A$38:A$47))+СЧЁТ(ПОИСК(B38;B$37:B37)))*ДЛСТР(B38)
К сообщению приложен файл: 777888_1.xlsx (15.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУФ
Код
=(СЧЁТ(ПОИСК(B38;$A$38:A$47))+СЧЁТ(ПОИСК(B38;B$37:B37)))*ДЛСТР(B38)

Автор - _Boroda_
Дата добавления - 02.10.2017 в 22:58
Pelena Дата: Понедельник, 02.10.2017, 23:00 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19509
Репутация: 4620 ±
Замечаний: ±

Excel 365 & Mac Excel
Формула массива
Код
=ЕСЛИОШИБКА(ИНДЕКС(B$2:B$11;НАИМЕНЬШИЙ(ЕСЛИ((ПОИСКПОЗ(B$2:B$11;B$2:B$11;0)=СТРОКА($B$2:$B$11)-1)*(СЧЁТЕСЛИ($A$2:A$11;B$2:B$11)=0);СТРОКА($B$2:$B$11)-1);СТРОКА(A1)));"")
К сообщению приложен файл: 0447548.xlsx (15.8 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеФормула массива
Код
=ЕСЛИОШИБКА(ИНДЕКС(B$2:B$11;НАИМЕНЬШИЙ(ЕСЛИ((ПОИСКПОЗ(B$2:B$11;B$2:B$11;0)=СТРОКА($B$2:$B$11)-1)*(СЧЁТЕСЛИ($A$2:A$11;B$2:B$11)=0);СТРОКА($B$2:$B$11)-1);СТРОКА(A1)));"")

Автор - Pelena
Дата добавления - 02.10.2017 в 23:00
Che79 Дата: Понедельник, 02.10.2017, 23:18 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
Оба варианта - очень круты и работают на большом реальном массиве! Спасибо вам большое!!!
Если с формулой мне, в общем, понятно, то с УФ не очень.
_Boroda_, Саша, если не затруднит, можете кратко пояснить прям по слагаемым множителям? Мне для саморазвития yes


Делай нормально и будет нормально!

Сообщение отредактировал Che79 - Понедельник, 02.10.2017, 23:21
 
Ответить
СообщениеОба варианта - очень круты и работают на большом реальном массиве! Спасибо вам большое!!!
Если с формулой мне, в общем, понятно, то с УФ не очень.
_Boroda_, Саша, если не затруднит, можете кратко пояснить прям по слагаемым множителям? Мне для саморазвития yes

Автор - Che79
Дата добавления - 02.10.2017 в 23:18
_Boroda_ Дата: Понедельник, 02.10.2017, 23:49 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16881
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
можете

Почему на форуме в пьяном виде? :D В глазах двоится, а то и троится? Меня здесь не много, я один, поэтому тем, кто отвечает на вопросы, не нужно обижать меня "выканьем" - мы здесь одна семья отвечальников

А по поводу пояснить - конечно
Для простоты представим, что мы рассматриваем ячейку С40, тогда формула будет для нее интерпретироваться УФ-ом так (неважно, что в самом УФ она записывается ссылками на первую ячейку диапазона - В38 - для каждой ячейки внутри Excel ссылки без $ скользят:
Код
=(СЧЁТ(ПОИСК(C40;$A$38:B$47))+СЧЁТ(ПОИСК(C40;C$37:C39)))*ДЛСТР(C40)

1. ПОИСК(C40;$A$38:B$47) - ищет значение текущей ячейки в диапазоне справа (от строки 38 до строки 47). Или находит, или не находит. Если находит, то дает какое-то число (единицу в нашем случае), если не находит, то дает ошибку. Кстати, ПОИСК здесь не совсем верно использовать, ведь существуют имена, которые являются частью других имен. Пример Александр и Александра
Тогда вернее было бы вот так написать
Код
=(СЧЁТ(1/(B38=$A$38:A$47))+СЧЁТ(1/(B38=B$37:B37)))*ДЛСТР(B38)

Для С40 вот так
Код
=(СЧЁТ(1/(C40=$A$38:B$47))+СЧЁТ(1/(C40=C$37:C39)))*ДЛСТР(C40)

С новой формулой возвращаемся обратно к пункту 1 -
1. C40=$A$38:B$47 - если значение текущей ячейки равно какой-то ячейке диапазона справа (от строки 38 до строки 47), по получаем ИСТИНА, иначе - ЛОЖЬ. Итог - массив из ЛОЖЬ и, может быть, ИСТИНА.
2. 1/(п.1) - делим 1 на полученное в п.1. Получаем массив из ошибок деления на ноль и, может быть, единиц (там, где совпадение).
3. СЧЁТ(п.2) - СЧЁТ игнорирует ошибки и считает только числа. Если у нас есть совпадения (одно или несколько), то СЧЁТ даст какое-то число (1, 2, 3, ... - нам не так уж и важно какое, главное, что не ноль). А если совпадение не обнаружено, то СЧЁТ даст нам ноль
4.
5.
6. СЧЁТ(1/(C40=C$37:C39)) - аналогично пунктам 1-3, только ищем совпадения не справа, а сверху
7. Складываем полученное в п.3 и в п.6. Если или справа, или сверху (или и там, и там) совпадения есть, то эта сумма даст нам какое-то число. Неважно какое, главное, что не ноль
8. ДЛСТР(С40) - дает нам длину строки проверяемой ячейки. Если в ячейке ничего нет, то ДЛСТР даст ноль, иначе - какое-то число
9. Умножаем п.7 на п.8 - получаем какое-то число только в том случае, если и в п.7, и в п.8 у нас получились числа, отличные от нуля, что означает, что или справа, или сверху от текущей ячейки есть ее повтор и, при этом, сама ячейка не пустая
10. Для УФ признаком срабатывания является значение ИСТИНА. А в Excel ИСТИНА - это любое число, отличное от нуля. Следовательно, УФ сработает тогда, когда мы в нашей формуле получим любое ненулевое значение

Если что-то не совсем ясно пояснил, то могу дописать
К сообщению приложен файл: 777888_2.xlsx (15.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
можете

Почему на форуме в пьяном виде? :D В глазах двоится, а то и троится? Меня здесь не много, я один, поэтому тем, кто отвечает на вопросы, не нужно обижать меня "выканьем" - мы здесь одна семья отвечальников

А по поводу пояснить - конечно
Для простоты представим, что мы рассматриваем ячейку С40, тогда формула будет для нее интерпретироваться УФ-ом так (неважно, что в самом УФ она записывается ссылками на первую ячейку диапазона - В38 - для каждой ячейки внутри Excel ссылки без $ скользят:
Код
=(СЧЁТ(ПОИСК(C40;$A$38:B$47))+СЧЁТ(ПОИСК(C40;C$37:C39)))*ДЛСТР(C40)

1. ПОИСК(C40;$A$38:B$47) - ищет значение текущей ячейки в диапазоне справа (от строки 38 до строки 47). Или находит, или не находит. Если находит, то дает какое-то число (единицу в нашем случае), если не находит, то дает ошибку. Кстати, ПОИСК здесь не совсем верно использовать, ведь существуют имена, которые являются частью других имен. Пример Александр и Александра
Тогда вернее было бы вот так написать
Код
=(СЧЁТ(1/(B38=$A$38:A$47))+СЧЁТ(1/(B38=B$37:B37)))*ДЛСТР(B38)

Для С40 вот так
Код
=(СЧЁТ(1/(C40=$A$38:B$47))+СЧЁТ(1/(C40=C$37:C39)))*ДЛСТР(C40)

С новой формулой возвращаемся обратно к пункту 1 -
1. C40=$A$38:B$47 - если значение текущей ячейки равно какой-то ячейке диапазона справа (от строки 38 до строки 47), по получаем ИСТИНА, иначе - ЛОЖЬ. Итог - массив из ЛОЖЬ и, может быть, ИСТИНА.
2. 1/(п.1) - делим 1 на полученное в п.1. Получаем массив из ошибок деления на ноль и, может быть, единиц (там, где совпадение).
3. СЧЁТ(п.2) - СЧЁТ игнорирует ошибки и считает только числа. Если у нас есть совпадения (одно или несколько), то СЧЁТ даст какое-то число (1, 2, 3, ... - нам не так уж и важно какое, главное, что не ноль). А если совпадение не обнаружено, то СЧЁТ даст нам ноль
4.
5.
6. СЧЁТ(1/(C40=C$37:C39)) - аналогично пунктам 1-3, только ищем совпадения не справа, а сверху
7. Складываем полученное в п.3 и в п.6. Если или справа, или сверху (или и там, и там) совпадения есть, то эта сумма даст нам какое-то число. Неважно какое, главное, что не ноль
8. ДЛСТР(С40) - дает нам длину строки проверяемой ячейки. Если в ячейке ничего нет, то ДЛСТР даст ноль, иначе - какое-то число
9. Умножаем п.7 на п.8 - получаем какое-то число только в том случае, если и в п.7, и в п.8 у нас получились числа, отличные от нуля, что означает, что или справа, или сверху от текущей ячейки есть ее повтор и, при этом, сама ячейка не пустая
10. Для УФ признаком срабатывания является значение ИСТИНА. А в Excel ИСТИНА - это любое число, отличное от нуля. Следовательно, УФ сработает тогда, когда мы в нашей формуле получим любое ненулевое значение

Если что-то не совсем ясно пояснил, то могу дописать

Автор - _Boroda_
Дата добавления - 02.10.2017 в 23:49
Che79 Дата: Вторник, 03.10.2017, 00:02 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
Саша, спасибо, изучу и, возможно, еще вернусь с вопросами, но утром-днем
По поводу
тем, кто отвечает на вопросы, не нужно обижать меня "выканьем"
- принято :)


Делай нормально и будет нормально!
 
Ответить
СообщениеСаша, спасибо, изучу и, возможно, еще вернусь с вопросами, но утром-днем
По поводу
тем, кто отвечает на вопросы, не нужно обижать меня "выканьем"
- принято :)

Автор - Che79
Дата добавления - 03.10.2017 в 00:02
  • Страница 1 из 1
  • 1
Поиск:

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