Есть таблица с данными. Каждому значению столбца HEX соответствует строка значений из нескольких столбцов (диапазон B:I). Необходимо найти значение HEX и вернуть соответствующую строку со значениями справа в таблице (диапазон B:I).
Сижу над решением задачи уже часа 4... Нашел тут на форуме частично подходящий макрос - ВПРП. Он ищет искомое значение в нечетных столбцах и возвращает значение в той же строке но только следующего столбца, а мне нужно вернуть всю строку со значениями (или можно перефразировать определенное кол-во столбцов этой строки, так как оно известно и постоянно). Пытаюсь "допилить" макрос под свою задачу, не выходит... может им вообще не возможно реализовать данную задачу. Буду рад любому решению поставленной задачи.
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 видите нужные данные
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Вы уж простите, стыдно уже переспрашивать, но не понимаю в чем дело... не было раньше проблем с массивами - Ctrl+Shift+Enter вместо простого Enter и все работало...
Игорь, я страсть как не люблю формулы массива. В твоем файле Копирую формулу Удаляю из диапазона вставляю в B22 получаю ЗНАЧ() выделяю до I, жму 3 пальца Знач во всех ячейках. Хотя x= rg.Offset(0, 1).Resize(1, Tablo.Columns.Count - 1).Value дает вполне нормальный массив. Что тут не так?
PS даже просто F2 и 3 пальца даю ЗНАЧ во всех ячейках
повторил действия описанные в #7 получил результаты описанные в #7 (как задумывалось и как должно было получиться, правда предварительно в А23 было внесено искомое значение)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
нельзя изменить часть диапазона в формуле массива а редактируется это так: 1. курсор в любую из ячеек B22:I22 2. скопировали формулу, Esc 3. отметили все ячейки с формулой, Del (видите все пусто?) 4. скопировали формулу в ЛЮБУЮ ячейку (только не в данные, вот сейчас можете редактировать что угодно), Enter (видите URL?) 5. отметили ячейку с формулой + и еще 7 ячеек правее ее 6. F2, Ctrl+Shift+Enter (видите нужные данные?)
на каком пункте что не получилось так, как написано выше?
Ігор Гончаренко написал: 4. скопировали формулу в ЛЮБУЮ ячейку (только не в данные, вот сейчас можете редактировать что угодно), Enter (видите URL?)
До этого пункта все получается как написано. А на 4 пункте я вставляю формулу, например, в ячейку B22 (в результате, визуально вижу выше выделенный диапазон A2:I20, а слева выделенную ячейку А22 - см скрин step_4.1), затем я нажимаю Enter и в результате становится выделенной ячейка ниже, т.е. B23, а в ячейке B22 я вижу - #ЗНАЧ! - см скрин step_4.2
хорошо)) 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 (видны все данные?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
ладно спишем на разницу версий (у меня 2019) после п.4 Ctrl+Shift+Enter - все на месте? так это и есть конечная цель, остальные пункты - подготовительные операции))
Андрей, видимо для использования UDF на листе нужно учитывать ограничение на длину элемента массива в 255 символов. При сокращении количества знаков формула работает
artyrH написал: нифига не пойму. чем впр не устроил?
Спасибо большое, все работает. Я как то не рассматривал такой вариант решения задачи... Хотелось сразу подтянуть всю строку от этого и отталкивался
Цитата
artyrH написал: а то и вправду начнет в каждую ячейку вводить мою формулу и потом предъявит еще)
Я бы так не делал, это уж слишком )))
Цитата
Sanja написал: Андрей, видимо для использования UDF на листе нужно учитывать ограничение на длину элемента массива в 255 символов. При сокращении количества знаков формула работает
Да! При сокращении данных работает. Печально, что только в 2019-м нет ограничения на длину массива.
Буду пробовать обработать свои 800 тыс строк с помощью ВПР предложенным Артуром...