Страницы: 1
RSS
Поиск значения в таблице и возврат всей строки с найденным значением
 
Добрый день!

Есть таблица с данными. Каждому значению столбца HEX соответствует строка значений из нескольких столбцов (диапазон B:I).
Необходимо найти значение HEX и вернуть соответствующую строку со значениями справа в таблице (диапазон B:I).

Сижу над решением задачи уже часа 4... Нашел тут на форуме частично подходящий макрос - ВПРП. Он ищет искомое значение в нечетных столбцах и возвращает значение в той же строке но только следующего столбца, а мне нужно вернуть всю строку со значениями (или можно перефразировать определенное кол-во столбцов этой строки, так как оно известно и постоянно). Пытаюсь "допилить" макрос под свою задачу, не выходит... может им вообще не возможно реализовать данную задачу. Буду рад любому решению поставленной задачи.

Пример во вложении.

Огромное спасибо за помощь!
Изменено: _DenA_ - 03.06.2019 21:44:11
 
осталось прикрепить к сообщению
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добрый день!
Цитата
_DenA_ написал:
Пример во вложении.
Видимо вы забыли приложить ваш пример.
 
Ребят, я прикрепил, пока Вы читали пост :)
 
я так?
Код
Function FindDataRow(V, Tablo)
  Dim rg As Range
  Set rg = Tablo.Columns(1).Find(V, , xlValues, xlWhole, SearchFormat:=False)
  If rg Is Nothing Then Exit Function
  FindDataRow = rg.Offset(0, 1).Resize(1, Tablo.Columns.Count - 1).Value
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, добавил пару значений для сопоставления, вставил функцию так же с массивом как у Вас в примере, но у меня ошибка - #ЗНАЧ!...
Скажите, пожалуйста, в чем может быть проблема? Приложил пример с ошибкой.
 
проблема может быть в том, что Вы не знаете как пользоваться функцией, которая возвращает массив данных
пишете в В23 =FindDataRow(A23;$A$2:$I$20)
жмете Enter
видите URL
отмечаете диапазон В23:I23
жмете F2
жмете Ctrl+Shift+Enter
видите нужные данные
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
жмете Enter
После чего происходит переход на новую строку - в ячейку B24, а в ячейке B23 появляется та же ошибка - #ЗНАЧ!

Цитата
Ігор Гончаренко написал:
видите URL
и кроме того, что описал выше ничего не вижу :(

Вы уж простите, стыдно уже переспрашивать, но не понимаю в чем дело... не было раньше проблем с массивами - Ctrl+Shift+Enter вместо простого Enter и все работало...
 
Игорь, я страсть как не люблю формулы массива.
В твоем файле
Копирую формулу
Удаляю из диапазона
вставляю в B22
получаю ЗНАЧ()
выделяю до I, жму 3 пальца
Знач во всех ячейках.
Хотя x= rg.Offset(0, 1).Resize(1, Tablo.Columns.Count - 1).Value дает вполне нормальный массив.
Что тут не так?

PS даже просто F2 и 3 пальца даю ЗНАЧ во всех ячейках
Изменено: RAN - 03.06.2019 22:51:46
 
повторил действия описанные в #7 получил результаты описанные в #7
(как задумывалось и как должно было получиться, правда предварительно в А23 было внесено искомое значение)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
повторил действия описанные в #7 получил результаты описанные в #7
Я сейчас попробовал отредактировать Вашу формулу массива в присланном файле:
1. Выделил диапазон B22:I22
2. Нажал F2
3. Нажал Ctrl+Shift+Enter
И все ячейки диапазона B22:I22 заполнились - #ЗНАЧ!

Вижу, не только у меня не получается )

Игорь, и еще вопрос на будущее, как протянуть эту формулу на 800 тыс строк? У меня оч большая, объемная таблица данных...
Изменено: _DenA_ - 03.06.2019 23:22:54
 
Ниченепонимаю
 
нельзя изменить часть диапазона в формуле массива
а редактируется это так:
1. курсор в любую из ячеек B22:I22
2. скопировали формулу, Esc
3. отметили все ячейки с формулой, Del (видите все пусто?)
4. скопировали формулу в ЛЮБУЮ ячейку (только не в данные, вот сейчас можете редактировать что угодно), Enter (видите URL?)
5. отметили ячейку с формулой + и еще 7 ячеек правее ее
6. F2,  Ctrl+Shift+Enter (видите нужные данные?)

на каком пункте что не получилось так, как написано выше?
Изменено: Ігор Гончаренко - 03.06.2019 23:50:00
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
кинописи нет
так и делаю
Цитата
Ігор Гончаренко написал:
скопировали формулу в ЛЮБУЮ ячейку (только не в данные), Enter (видите URL)
НЕТ
 
Цитата
Ігор Гончаренко написал:
4. скопировали формулу в ЛЮБУЮ ячейку (только не в данные, вот сейчас можете редактировать что угодно), Enter (видите URL?)
До этого пункта все получается как написано.
А на 4 пункте я вставляю формулу, например, в ячейку B22 (в результате, визуально вижу выше выделенный диапазон A2:I20, а слева выделенную ячейку А22 - см скрин step_4.1), затем я нажимаю Enter и в результате становится выделенной ячейка ниже, т.е. B23, а в ячейке B22 я вижу - #ЗНАЧ! - см скрин step_4.2
Изменено: _DenA_ - 04.06.2019 00:18:23
 
хорошо))
1. очищаем строку 25
2. в В25 копируем это =FindDataRow(A25;$A$2:$I$20), Enter (видно в В25  ноль?)
3. в А25 копируем это: u2q8e6t4i1y3i1w7 (видно в В25 https://www.site.com/mpic/u2q8e6a9t4r5y3r5_-753-yuly-cartoon/?)
4. отмечаем В25 по I25, Ctrl+Shift+Enter (видны все данные?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
1. очищаем строку 25
Очистил (хотя она была пустой :) )

Цитата
Ігор Гончаренко написал:
2. в В25 копируем это =FindDataRow(A25;$A$2:$I$20), Enter (видно в В25  ноль?)
Вставил, да, в B25 появился ноль

Цитата
Ігор Гончаренко написал:
3. в А25 копируем это: u2q8e6t4i1y3i1w7 (видно в В25  https://www.site.com/mpic/u2q8e6a9t4r5y3r5_-753-yuly-cartoon/ ?)
Нет, после вставки в A25 вот этого: u2q8e6t4i1y3i1w7 и нажатия Enter, в B25 появляется #ЗНАЧ! как на моем скрине step_4.2 выше.

Я уже думаю, может что то не так с настройками Excel? У меня Excel 2016... недавно ставил начисто...  
Изменено: _DenA_ - 04.06.2019 00:56:38
 
ладно спишем на разницу версий (у меня 2019)
после п.4 Ctrl+Shift+Enter - все на месте?
так это и есть конечная цель, остальные пункты - подготовительные операции))
Изменено: Ігор Гончаренко - 04.06.2019 01:16:23
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
нифига не пойму. чем впр не устроил?
Код
=ВПР($A22;$A$2:$I$20;СТОЛБЕЦ(B1);0)
 
Цитата
artyrH написал:
чем впр не устроил?
тем что несколько раз надо вводить :-)
По вопросам из тем форума, личку не читаю.
 
гиф на всякий случай. а то и вправду начнет в каждую ячейку вводить мою формулу и потом предъявит еще)
Изменено: artyrH - 04.06.2019 09:37:18
 
Как процедура работает, а как формула листа - нет
Код
Sub test()
[b25].Resize(, 8) = FindDataRow([a25], [a2:i20])
End Sub
 
Андрей, видимо для использования UDF на листе нужно учитывать ограничение на длину элемента массива в 255 символов. При сокращении количества знаков формула работает
Согласие есть продукт при полном непротивлении сторон
 
Виталий, спасибо!
Значит, все-же
Цитата
Ігор Гончаренко написал:
ладно спишем на разницу версий (у меня 2019)
 
Если в 2019-м это ограничение снято, то это вселяет надежду на продолжение поддержки VBA, а может и его дальнейшее развитие!
Согласие есть продукт при полном непротивлении сторон
 
Цитата
artyrH написал:
нифига не пойму. чем впр не устроил?
Спасибо большое, все работает.
Я как то не рассматривал такой вариант решения задачи... Хотелось сразу подтянуть всю строку от этого и отталкивался :)

Цитата
artyrH написал:
а то и вправду начнет в каждую ячейку вводить мою формулу и потом предъявит еще)
Я бы так не делал, это уж слишком )))

Цитата
Sanja написал:
Андрей, видимо для использования UDF на листе нужно учитывать ограничение на длину элемента массива в 255 символов. При сокращении количества знаков формула работает
Да! При сокращении данных работает. Печально, что только в 2019-м нет ограничения на длину массива.

Буду пробовать обработать свои 800 тыс строк с помощью ВПР предложенным Артуром...

Ребят, спасибо за помощь!!!
Изменено: _DenA_ - 04.06.2019 09:52:43
Страницы: 1
Наверх