Страницы: 1
RSS
Поиск положения числа в двумерном массиве
 

Добрый день!

У меня Excel 2010 (то есть продвинутых функций поиска у меня нет). У меня есть двумерный массив (таблица, матрица)  из 35 строк и 47 столбцов

В массиве нет повторяющихся цифр.

Мне нужная функция, которая в качестве аргумента будет получать числа, и возвращать координаты (индекс), этого числа в массиве, если число в массиве встречается. На самом деле достаточно и номера строки, но любопытно узнать как найти полный индекс.

Что пробовал?
1)  ПОИСКПОЗ (MATCH) - В качестве диапазона функции MATCH можно задать одну строку или один столбец. У меня самый настоящий двухмерный массив – не подходит.

2) ВПР (VLOOKUP)  Производит поиск по первому столбцу диапазона.  Аналогично, у меня настоящий двухмерный массив не подходит.
ГПР – аналогично.

3) ПРОСМОТР (LOOKUP) –  Аналогично, в таблице не ищет.  

Файл с примером во вложении.
Лист 1 - матрица 35*47
Лист 2 - числа координаты для которых я буду искать в таблице.

 
Искать на форуме не пробовали?
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=30109
 
Спасибо за советы, кажется, победил.  
Код
=АДРЕС(СУММПРОИЗВ((H3=A1:E6)*СТРОКА(A1:E6));СУММПРОИЗВ((H3=A1:E6)*СТОЛБЕЦ(A1:E6));4)

A1:E6 - диапазон поиска
H3 - в этой ячейке значение которое мы ищем
4 -  возвращаемый тип ссылки (4 - относительный)

Пойду углублять знания в математике в области работы с массивами. Не подозревал, что через СУММПРОИЗВ можно получить номер строки или столбца.
 
Цитата
Иван написал: A1:E6 - диапазон поиска
Самии пробуете на 5 столбцах, в одном листе... а форуму  для чего такую большую матрицу прикрепили?

Данные в матрице:
- в каждой строке - по нарастанию?
- в столбце - по нарастанию? (А2=81, выбивается из ряда - это случайно?)
 
Цитата
vikttur написал:
Самии пробуете на 5 столбцах, в одном листе... а форуму  для чего такую большую матрицу прикрепили?
Уважаемый модератор, если тема про СУММПРОИЗВ многократно обсуждалась,  то вы  можете удалить её. К сожалению я очень долго и безрезультатно искал ответ, а  потому создал новую тему. Прошу прощения.
Большая таблица - это реальная задача, с которой я столкнулся. Но пример решения я нашел для малой таблицы.
Прикрепляю файл с решением для большой таблицы. Там есть, что доработать, например если значение не найдено писать 0.
 
Цитата
пример решения я нашел
Это уже больше 50% шансов на успех - умение искать на форуме.
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=9099
Изменено: Marat Ta - 02.05.2021 11:34:57
 
Цитата
Иван написал: Большая таблица - это реальная задача, с которой я столкнулся. Но пример решения я нашел для малой таблицы.
Вот и я Вам об этом. Помогающему легче оценить 50-70 чисел, чем терять время на проматывание матрицы вверх-вниз/влево-вправо

На вопросы Вы не ответили.
 
При активном Лист2 запустить макрос
Код
Sub ChisloAdres()
Dim i As Long
Dim iLastRow As Long
Dim FoundCell As Range
   iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
   Range("B1:B" & iLastRow).ClearContents
With Worksheets("Лист1")
  For i = 1 To iLastRow
    Set FoundCell = .Range("A1").CurrentRegion.Find(Cells(i, "A"), , xlFormulas, xlWhole)
     If Not FoundCell Is Nothing Then
       Cells(i, "B") = FoundCell.Address(0, 0)
     End If
  Next
End With
End Sub
Страницы: 1
Наверх