Инструмент соответствия диапазонов в Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Помогите решить такую задачу, может быть есть встроенные средства в Excel ?
Имеются диапазоны:

Код: Выделить всё

mas_A		mas_B
-------------------------------------
a1,b1		a4,c4
a2,b2		a1,c1
a3,b3		a3,c3
a4,b4	
a5,b5	
a6,b6	
Необходимо чтобы произвелось соответствие диапазонов по элементам первого столбца и элементы диапазона mas_B выстроились напротив соответствующих элементов диапазона mas_A, вот таким образом.

Код: Выделить всё

mas_A		mas_B
-------------------------------------
a1,b1		a1,c1
a2,b2		
a3,b3		a3,c3
a4,b4		a4,c4
a5,b5	
a6,b6	
Элементы в первом столбце диапазонов a1...an - уникальны и не повторяются.

P.S. Это часто необходимо для синхронизации перечней параметров из двух приложений, которые ведут свои базы параметров и имеют экспорт своих данных в Excel.
sergvk
Сообщения: 129
Зарегистрирован: 21 июн 2005, 14:33
Откуда: Крым, Феодосия
Контактная информация:

Ну и день у меня сегодня :lol: С утра как начал гипПерформулами заниматься... :lol:

Понимю, что значения "a1,b1..." условные
Вот такая формула: =ЕСЛИ(ЕОШИБКА(ИНДЕКС(mas_B;ПОИСКПОЗ(СЦЕПИТЬ(ЛЕВСИМВ(mas_A;3);
"c";ПРАВСИМВ(mas_A;1));mas_B;0);1));"";
ИНДЕКС(mas_B;ПОИСКПОЗ(СЦЕПИТЬ(ЛЕВСИМВ(mas_A;3);
"c";ПРАВСИМВ(mas_A;1));mas_B;0);1))

Я бы написал свою функцию для таких дел. :)


Пробелов в формуле навставлял, чтобы в экран умещалось :) AiK
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

sergvk, спасибо за отклик
я имел в виду конечно решение в виде макроса, а значения a1, b1, c1 - условные, вместо них могут быть любые значения.

Этот вопроос является продолжением ранее поднятой темы ...
Инструмент сравнения 2-массивов в Excel
forum/viewtopic.php?t=4456
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Ну а чем не это не решение!

Вот эту "гиперформулу" вводим во второй диапазон, а затем во втором диапазоне заменяем формулы значениями. Алгоритм из двух шагов :)
Тут самое сложное будет - это наверное переписать эту формулу в нотации R1C1.
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Нет - такой вариант для меня не приемлим, потому что эту операцию планирую производить не один раз, и размерности исходных массивов по числу столбцов могут быть различными.
Хотел иметь следующий вариант:
1. Выделил первый диапазон.
2. Выделил второй диапазон.
3. Нажал кнопку - второй массив пересортировался. Все.

Никаких формул выводить и размещать не надо.
Дионис
Сообщения: 153
Зарегистрирован: 11 июл 2005, 13:42
Откуда: Крым, Алушта
Контактная информация:

Avsha, если у тебя а1 в мас_1 и мас_2 ВСЕГДА одинаковы и никогда асинхронно не изменяются, при этом в мас_1 а1-аn непрерывно от 1 до n, но в мас_2 индекс прерывен (т.е. а2, а5, а21, аn-1), при этом тебе позволено создавать мас_3, то в нём можно поставить СУММЕСЛИ(мас_2_столбец_а;а1_из_мас_1;мас_2_столбец_с). При этом, правда, при отсутствии в мас_2 имени а4 в поле с4 будет 0
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Дионис,
Черновой вариант, который поясняет - как бы я хотел видеть этот инструмент сопоставления
- в файле... http://avsha.narod.ru/Sopost_Ranges.rar

Думаю, что формулами будет сложновато реализовать эту задачу,
но если Excel справиться и с этим без VBA, сниму перед ним шляпу ;)
Дионис
Сообщения: 153
Зарегистрирован: 11 июл 2005, 13:42
Откуда: Крым, Алушта
Контактная информация:

Avsha, посмотрел, я не правильно понял твою задачу, прошу прощения. Просто в описательной части было очень похоже на мою ежедневную работу
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Для желающих посмотреть, что там у парня (Avsha) в архиве:

Код: Выделить всё

Application.CommandBars.Item("Сопоставление массивов").Delete
- это вам потом пригодится... :wink:
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Да вы Sokl не обижайтесь на вложенную панель управления, которая приезжает вместе
с файлом... http://avsha.narod.ru/Sopost_Ranges.rar и остается в среде Excel-a, даже когда вы этот файл закрыли.
Эту логику придумал не я.
Автоматическое ее удаление при закрытии файласделать не успел ;(

Без макросов можно избавиться от нее...
Меню Вид\Панели Инструментов\Настройка\ вкладка Панели инструментов\выбираем панель "Сопоставление массивов" - кнопка "Удалить".
Ответить