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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 16:43   #1
Студент-снова
 
Регистрация: 16.01.2010
Сообщений: 7
По умолчанию Поиск дубликатов

Добрый день,

подскажите пожалуйста, как найти ПЕРВОЕ повторение значения в данной ячейки в массиве, расположенном ВЫШЕ данной ячейки.
___А______В
1. 1
2. 2
3. 4
4. 65
5. 6
6. 2
7. 34
8. 54
9. 2

Т.е если мы находимся в ячейке А9, нужно что бы он вывел значение из столбца В6

Как это сделать без макросов и без сортировки?
Заранее спасибо)

Последний раз редактировалось Студент-снова; 16.01.2010 в 16:51.
Студент-снова вне форума Ответить с цитированием
Старый 16.01.2010, 16:58   #2
Александр Д
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 13
По умолчанию

=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;ИНДЕКС ($A$1:A1;НАИБОЛЬШИЙ(ЕСЛИ($A$1:A1=A1 ;СТРОКА($A$1:A1));2));"нет повторов") - массив, при вводе ctrl+shift+enter, возвращает ближайшее повторное значение сверху относительно текущей ячейки, т е то, что вы просили.

=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;ВПР(A1 ;A1:A1;1;0);"нет повторов") - возвращает значение ячейки, где значение текущей ячейки встречается впервые.

=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;ЯЧЕЙКА ("адрес";ИНДЕКС($A$1:A1;НАИБОЛЬШИЙ( ЕСЛИ($A$1:A1=A1;СТРОКА($A$1:A1));2) ));"нет повторов") - массив, при вводе ctrl+shift+enter, возвращает адрес ближайшей ячейки сверху, значение которой равно значению текущей ячейки.

=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;ЯЧЕЙКА ("адрес";ИНДЕКС($A$1:A1;ПОИСКПОЗ(A1 ;$A$1:A1;0)));"нет повторов") - возвращает адрес первой ячейки, значение которой равно значению текущей ячейки.
Александр Д вне форума Ответить с цитированием
Старый 16.01.2010, 17:11   #3
Студент-снова
 
Регистрация: 16.01.2010
Сообщений: 7
По умолчанию

А наверно не правильно написал- нужно первое повторение при движении вверх от данной ячейки.
Студент-снова вне форума Ответить с цитированием
Старый 16.01.2010, 17:19   #4
Александр Д
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 13
По умолчанию

=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;ЯЧЕЙКА ("адрес";ИНДЕКС($A$1:A1;НАИБОЛЬШ ИЙ( ЕСЛИ($A$1:A1=A1;СТРОКА($A$1:A1));2) ));"нет повторов") - массив, при вводе ctrl+shift+enter, возвращает адрес ближайшей ячейки сверху, значение которой равно значению текущей ячейки.
Александр Д вне форума Ответить с цитированием
Старый 16.01.2010, 17:31   #5
Студент-снова
 
Регистрация: 16.01.2010
Сообщений: 7
По умолчанию

Спасбо большле)
А можно еще вопрос?))

Как записать в ссылке на ячейку в формуле, например , =А1+1, номер строки как некую формулу, которая возвращает 1?
Студент-снова вне форума Ответить с цитированием
Старый 16.01.2010, 17:36   #6
Александр Д
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 13
По умолчанию

Попробуйте перефразировать вопрос более понятно, на русском языке...
Александр Д вне форума Ответить с цитированием
Старый 16.01.2010, 17:42   #7
Студент-снова
 
Регистрация: 16.01.2010
Сообщений: 7
По умолчанию

Сейчас попробую))
Например, в ячейке В1 пишу формулу =А1,
и имею С1 =0.5 и D1=0.5

Надо номер строки в ссылке А1, т.е единицу, записать как некую формулу, которая возвращает 1, например С1+D1, т.е в В1=А "С1+D1" ?
Студент-снова вне форума Ответить с цитированием
Старый 16.01.2010, 17:49   #8
Александр Д
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 13
По умолчанию

Вам нужен номер строки? Обратите внимание на функцию строка.

Формула получается следующей:
=ЕСЛИ(СЧЁТЕСЛИ($A$1:A1;A1)>1;НАИБОЛ ЬШИЙ( ЕСЛИ($A$1:A1=A1;СТРОКА($A$1:A1));2) ;"нет повторов")
Александр Д вне форума Ответить с цитированием
Старый 16.01.2010, 18:15   #9
Студент-снова
 
Регистрация: 16.01.2010
Сообщений: 7
По умолчанию

Спасибо, а не могли бы пояснить, что делает формула

ЕСЛИ($A$1:A1=A1;СТРОКА($A$1:A1))-

1) она возвращает массив?
2) что означает условие $A$1:A1=A1-это проверка по массиву, т.е он строит массив из значений в $A$1:A1, которые равны значению в А1?

а тогда что он возвращает при СТРОКА($A$1:A1)
Студент-снова вне форума Ответить с цитированием
Старый 16.01.2010, 18:36   #10
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Тоже формула массива. Возвращает самую последнюю строку выше той, в которой расположена формула и имеющей то же значение, что и указанное в ячейке - в примере B2
Код:
=МАКС(ЕСЛИ($B$1:B1=B2;СТРОКА($B$1:B1);0))
Если нет совпадений вернет 0.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание дубликатов таблиц Sparky SQL, базы данных 4 29.12.2009 16:45
Удаления дубликатов строк memo AquaKlaster Общие вопросы Delphi 7 20.07.2009 23:46
поиск макросом дубликатов в таблице эксель brokoli Microsoft Office Excel 12 20.01.2009 11:26
Программа нахождения дубликатов MP3 mutabor Софт 4 20.10.2008 20:36
удаление дубликатов и группировка строк Serglen Microsoft Office Excel 2 30.07.2008 15:51