Страницы: 1
RSS
найти в массиве первое искомое число
 

Подскажите пожалуйста, как найти в массиве (из 52 чисел - А1:F36) первое искомое число и извлечь номер строки массива в которой это число найдено (числа от1 до52) в столбец (пронумерованный соответственно, например I2:I53).

 
Поиск по строкам или по столбцам?
 
Судя по примеру, - построчный поиск.

Поискпоз только в одномерном массиве ищет. Прописывать в формуле и проверять с условием каждую строку  - слишком уж колхозно. А как по иному и без VBA - не знаю. Послежу за наличием решения.
Изменено: Сергей Евдокимов - 05.12.2021 14:57:57
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
массивка
=MIN(IF(($A$1:$F$36=H2);ROW($A$1:$F$36)))
не массивка
=AGGREGATE(15;6;ROW($A$1:$F$36)/($A$1:$F$36=H2);1)
Изменено: БМВ - 05.12.2021 14:59:36
По вопросам из тем форума, личку не читаю.
 
Код
=МИН(ЕСЛИ((СЛМАССИВ(36;6;H2;H2;1)=$A$1:$F$36)*ОКРУГЛВВЕРХ(ПОСЛЕД(36;6)/6;0)<>0;(СЛМАССИВ(36;6;H2;H2;1)=$A$1:$F$36)*ОКРУГЛВВЕРХ(ПОСЛЕД(36;6)/6;0);""))
 
БМВ, Здорово. Элегантно. Так и знал, что вы чё-нить придумаете 👏
Изменено: Сергей Евдокимов - 05.12.2021 15:05:22
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
БМВ Формулы классно пишите. Я попробовал поискпоз и решил  макросом
Код
Sub SENfdsg()
Dim Arr1, Rg1 As Range, Rg2 As Range
Set Rg1 = Cells(1).CurrentRegion
Arr1 = Range("H1").CurrentRegion
For i = 2 To UBound(Arr1)
Set Rg2 = Rg1.Find(Arr1(i, 1), Rg1.Cells(Rg1.Cells.Count), xlFormulas, xlWhole, xlByRows)
If Not Rg2 Is Nothing Then Arr1(i, 2) = Rg2.Row
Next
Range("H1").Resize(UBound(Arr1), UBound(Arr1, 2)) = Arr1
End Sub
Изменено: Евгений Смирнов - 05.12.2021 15:23:27
 
допустим мы ищем "первое число 9"
имеем такие данные:
   А  В  С  D...
1  7  8  5  9 ...
2  9  5  2  4...
3  5  4  3  1...
...
так где первое 9 в D1 или в А2?
об этом был вопрос Виктора и формулу поиска первой позиции числа 9 в массиве нужно писать в зависимости от ответа на этот вопрос
Изменено: Ігор Гончаренко - 05.12.2021 15:18:07
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Согласно примера хотят поиск по строке
 
Цитата
Ігор Гончаренко: так где первое 9 в В1 или в А2?
Приложенный от ТС пример, четко и однозначно отвечает на этот вопрос.
скрин
Изменено: Сергей Евдокимов - 05.12.2021 15:23:29
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
в задаче спрашивают строку, в которой найдено мскомое число
но в задаче не говорят в каком порядке просматривать данные
начать поиск с первой строки - это ваше предположение, а не условие описанное в задаче)

понимаете, когда у вас большой массив данных нужно распечатать на пронумерованные листы
то задав последовательность печати направо-вниз а потом вниз-направо вы получите две распечатки, у которых на листе с номером 2 будут лежать разные данные
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
На вопрос Виктора есть часть ответа в примере, где в отличии от многих тем, приведен желаемый результат который четко показывает что нужно найти. Да и
Цитата
Александр С. написал:
и извлечь номер строки массива в которой это число найдено
читается без домыслов о том что ищем потрочно.
Изменено: БМВ - 05.12.2021 15:41:12
По вопросам из тем форума, личку не читаю.
 
Цитата
Ігор Гончаренко написал:
начать поиск с первой строки - это ваше предположение...
Уже трое ответили. Может всё же стоит в пример заглянуть ?
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
да хоть 10 человек могут ответить)
зашел в тему прочитал вопрос, в следующим сообщении вижу уточняющий вопрос Виктора пролистал вниз и не нашел ответ на этот вопрос
и понимаю, что не знаю как искать, пока автор не обьяснит
зачем мне смотреть файл, если в условиях задачи нет важного уточнения "в каком порядке искать данные", а без этого уточнения я не понимаю что требуется найти, что считать "первым искомым значением", значение в А2, которое вижу глазами, или где-то там в КК1

но все ответившие - молодцы!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
БМВ написал:
=MIN(IF(($A$1:$F$36=H2);ROW($A$1:$F$36)))
Михаил, добрый вечер! Тоже начал в эту сторону думать, но пока доп.столбцы делал, решение появилось. У меня вообще с массивками туговато... Спасибо за показанный принцип!
Цитата
Сергей Евдокимов написал:
Прописывать в формуле и проверять с условием каждую строку  - слишком уж колхозно
Зато очень наглядно, и проще будет разбираться в дальнейшем, что нужно было сделать. Как по мне - лучше 10 понятных доп. столбцов, чем одна непонятная многоэтажная формула (она в таких случаях - как код без комментариев, хрен его знает, чего и зачем там автор делал...) В циклах VBA не это же делается? Проверка условий по строкам и столбцам?
Off: плох или хорош колхоз - показывают надои от коров и тонны выращенной  картошки (т.е. результат, а не способы)  :)
Изменено: _Igor_61 - 05.12.2021 16:08:28
 
_Igor_61 Здравствуйте
Вот я тоже попробовал поискпоз не идет. Понял, что БМВ быстрее напишет, и стал писать макрос.
Вообще некоторые вещи в формулах непонятны какая логика их написания Например такая формула поиск в массиве дает ошибку
Код
=ПОИСК($B$1:$B$10;A1)

А в месте со счёт выдает результат. Вообще непонятно как писать. Я раньше писал вложениями, а тут какие вложения, если в 1 варианте ошибка вылазит.

Код
=СЧЁТ(ПОИСК($B$1:$B$10;A1))
Изменено: Евгений Смирнов - 05.12.2021 16:35:26
 
Цитата
написал:
некоторые вещи в формулах непонятны какая логика их написания
Поэтому тоже предпочитаю написать несколько строк кода :) Для меня это понятней, а формулы изучать нужно.... Хотя бывают случаи, когда формулы эффективней... Раз на раз не приходится.... :)
 
Igor_61 Да надо конечно и формулы уметь писать, иногда даже в VBA некоторые вещи можно с их помощью  проще сделать, но видимо надо много их написать, чтобы быть на уровне БМВ.
Изменено: Евгений Смирнов - 05.12.2021 17:02:18
 
Цитата
Евгений Смирнов написал:
такая формула поиск в массиве дает ошибку
ВСЕ формулы дают ошибку в случаях неправильного применения
Изменено: _Igor_61 - 05.12.2021 17:47:36
 
Столько хвалебных слов за примитивную формулу медведь давно не собирал.
За годы жизни Excel, люди напридумали много трюков, способов и .... которые позволяют делать какие-либо операции, при этом не факт что сами функции создавались для этого , но в совокупности они дают результат. Остается из набора этих формул, трюков и способов собрать то, что нужно. В этой теме нет ничего сверх, используется поиск минимального с условием при помощи массива. Условие - это равенство, а в качестве значения выступает номер строки.
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
Столько хвалебных слов за примитивную формулу медведь давно не собирал
Как минимум последние год-два... Достаточно почитать вопросы ТС-ов на этом сайте и на дружественных... Суть вопросов в основном - "Дайте макрос или формулу" а не "объясните....". Удочка, про которую говорил Николай  несколько лет назад не работает...  Хочется рыбу сразу на сковородке... Грустно...
 
Off
_Igor_61, Ну тут я тоже отношусь с пониманием, многим это надо разово. Другое дело, когда раз за разом и с одним и тем же почти вопросом приходят , не желая рfзбираться , а еще прибавят, мол я не программист и не ИТшник, можно подумать что все ИТшники должны уметь программировать и шарить в excel.
По вопросам из тем форума, личку не читаю.
 
Медведем можешь ты не быть, но быть IT-шником обязан!
 

Здравствуйте. Большое спасибо всем за полезную информацию. Старался правильно (с примером) сформулировать вопрос, простите, что не всем понятно. Уточняю - поиск по строкам. И в одной строке массива числа не повторяются.

 
Александр, #4 видели?
Если не работает - покажите в файле и расскажите,где и как и при каких условиях не работает, будем искать решение :)
 
Здравствуйте. БМВ,для хвалебных слов есть основания. Для написания, из Ваших слов пусть и примитивной формулы, необходимо иметь соответствующие знания. Так что респект Вам. Формула работает. Большое спасибо.
Страницы: 1
Наверх