Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнить два массива не одинаковых подбор значений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сравнить два массива не одинаковых подбор значений (Формулы)
Сравнить два массива не одинаковых подбор значений
kadekin Дата: Пятница, 16.08.2013, 11:25 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброе время суток.
Столкнулся с такой проблемой. Не знаю как подойти и как ее решить с помощью макроса. Сравнить два массива и подобрать значения.
Эти массивы все время меняются (их формирует другая программа) и по количеству столбцов они не одинаковые. Причем 1 массив является основным (эталонным). Мне нужно сравнить 1 массив со вторым. Причем со второго массива подобрать значение наиболее подходящее для значения из первого массива т.е. 590 должно подойти 600. И так для каждого значения 1 массива.
И результат вывести на другой лист.
Есть два массива
1массив 2массив
590 и 800
516 2450
1939 900
419 1200
590 600
516 500
1939 450
419 320
210

Пример данного отчета выкладываю.
Интересующие столбцы (массива)окрашены . Эталонный массив окрашен в желтый.
К сообщению приложен файл: 53-513.xlsx (11.4 Kb)
 
Ответить
СообщениеДоброе время суток.
Столкнулся с такой проблемой. Не знаю как подойти и как ее решить с помощью макроса. Сравнить два массива и подобрать значения.
Эти массивы все время меняются (их формирует другая программа) и по количеству столбцов они не одинаковые. Причем 1 массив является основным (эталонным). Мне нужно сравнить 1 массив со вторым. Причем со второго массива подобрать значение наиболее подходящее для значения из первого массива т.е. 590 должно подойти 600. И так для каждого значения 1 массива.
И результат вывести на другой лист.
Есть два массива
1массив 2массив
590 и 800
516 2450
1939 900
419 1200
590 600
516 500
1939 450
419 320
210

Пример данного отчета выкладываю.
Интересующие столбцы (массива)окрашены . Эталонный массив окрашен в желтый.

Автор - kadekin
Дата добавления - 16.08.2013 в 11:25
Формуляр Дата: Пятница, 16.08.2013, 11:33 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Формулой массива:
Код
{= 10000 * MOD( MIN( ABS($D$5:$D$14 - L5) + $D$5:$D$14/10000 ), 1 )}


Цитата (Формуляр, 16.08.2013 в 11:33, в сообщении №2)
И результат вывести на другой лист.
Куда там выводить результат вы не указали.
К сообщению приложен файл: 53-513.xls (31.5 Kb)


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Пятница, 16.08.2013, 11:36
 
Ответить
СообщениеФормулой массива:
Код
{= 10000 * MOD( MIN( ABS($D$5:$D$14 - L5) + $D$5:$D$14/10000 ), 1 )}


Цитата (Формуляр, 16.08.2013 в 11:33, в сообщении №2)
И результат вывести на другой лист.
Куда там выводить результат вы не указали.

Автор - Формуляр
Дата добавления - 16.08.2013 в 11:33
kadekin Дата: Пятница, 16.08.2013, 11:41 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
1 Попробовал подставить формулу в 2007 выдал ошибку.
2 А где перебор ??? и выбор ???
 
Ответить
Сообщение1 Попробовал подставить формулу в 2007 выдал ошибку.
2 А где перебор ??? и выбор ???

Автор - kadekin
Дата добавления - 16.08.2013 в 11:41
kadekin Дата: Пятница, 16.08.2013, 11:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
На любой .. можно пока на этой странице ... (листе) я потом все оформлю... сейчас мне нужно эту задачу решить ..
 
Ответить
СообщениеНа любой .. можно пока на этой странице ... (листе) я потом все оформлю... сейчас мне нужно эту задачу решить ..

Автор - kadekin
Дата добавления - 16.08.2013 в 11:42
Формуляр Дата: Пятница, 16.08.2013, 11:45 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Какой перебор? Какой выбор?
Потрудитесь внятно изложить описание ошибки, условия задачи и подготовить пример в соответствии с Правилами форума.


Excel 2003 EN, 2013 EN

Сообщение отредактировал Формуляр - Пятница, 16.08.2013, 11:45
 
Ответить
СообщениеКакой перебор? Какой выбор?
Потрудитесь внятно изложить описание ошибки, условия задачи и подготовить пример в соответствии с Правилами форума.

Автор - Формуляр
Дата добавления - 16.08.2013 в 11:45
kadekin Дата: Пятница, 16.08.2013, 12:02 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Мне нужно подобрать для первого массива значение из второго массива как можно близкое значение. Например в первом массиве значения
1200, 500, 800, 900, 2500
Во втором массиве
2500, 450, 1000, 1000
После запуска (формула или макроса) что лучше и проще . Мы должны получить
что значениям первого массива
1200 не подходит ни чего (так как это значение уже отобрано)
500 не подходит ни чего
800 подходит 1000
900 подходит 1000
2500 подходит 2500

Как решить эту задачу я не знаю по этому прошу помощи подсказки или совета.
 
Ответить
СообщениеМне нужно подобрать для первого массива значение из второго массива как можно близкое значение. Например в первом массиве значения
1200, 500, 800, 900, 2500
Во втором массиве
2500, 450, 1000, 1000
После запуска (формула или макроса) что лучше и проще . Мы должны получить
что значениям первого массива
1200 не подходит ни чего (так как это значение уже отобрано)
500 не подходит ни чего
800 подходит 1000
900 подходит 1000
2500 подходит 2500

Как решить эту задачу я не знаю по этому прошу помощи подсказки или совета.

Автор - kadekin
Дата добавления - 16.08.2013 в 12:02
kadekin Дата: Пятница, 16.08.2013, 12:40 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Мне тут подсказали такую формулу. Но она не в полном объеме решает мою задачу.
Код
=ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(RC[-1]+МИН(ABS(R2C1:R10C1-RC[-1]));R2C1:R10C1;0));RC[-1]-МИН(ABS(R2C1:R10C1-RC[-1]));RC[-1]+МИН(ABS(R2C1:R10C1-RC[-1])))
 
Ответить
СообщениеМне тут подсказали такую формулу. Но она не в полном объеме решает мою задачу.
Код
=ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(RC[-1]+МИН(ABS(R2C1:R10C1-RC[-1]));R2C1:R10C1;0));RC[-1]-МИН(ABS(R2C1:R10C1-RC[-1]));RC[-1]+МИН(ABS(R2C1:R10C1-RC[-1])))

Автор - kadekin
Дата добавления - 16.08.2013 в 12:40
Serge_007 Дата: Пятница, 16.08.2013, 12:48 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Тут - это где?

[admin]Замечания:
1. Оформляйте коды тегами
2. Читайте правила форума[/admin]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеТут - это где?

[admin]Замечания:
1. Оформляйте коды тегами
2. Читайте правила форума[/admin]

Автор - Serge_007
Дата добавления - 16.08.2013 в 12:48
Hugo Дата: Пятница, 16.08.2013, 12:54 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Где - это тут:
http://www.planetaexcel.ru/forum....D=50480
Это кстати формула массива - не забывайте упоминать, когда приводите!


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеГде - это тут:
http://www.planetaexcel.ru/forum....D=50480
Это кстати формула массива - не забывайте упоминать, когда приводите!

Автор - Hugo
Дата добавления - 16.08.2013 в 12:54
MCH Дата: Пятница, 16.08.2013, 13:39 | Сообщение № 10
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Какая задача? Нужно найти оптимально подходящие заготовки (с наименьшими обрезками), либо на оптимизацию не обращаем внимание?

Алгоритм для VBA: сортируем оба массива по убыванию, берем из второго массива нужный размер и ищем его в первом, как только нашелся тот, который больше нужного - выбираем, и так далее, в данном случае об оптимизации речь не идет, но алгоритм получается очень быстрым и на больших массивах будет быстро работать.
Если данных не много, то лучше сделать перебор, с выбором оптимального варианта

Сколько всего может быть чисел?
 
Ответить
СообщениеКакая задача? Нужно найти оптимально подходящие заготовки (с наименьшими обрезками), либо на оптимизацию не обращаем внимание?

Алгоритм для VBA: сортируем оба массива по убыванию, берем из второго массива нужный размер и ищем его в первом, как только нашелся тот, который больше нужного - выбираем, и так далее, в данном случае об оптимизации речь не идет, но алгоритм получается очень быстрым и на больших массивах будет быстро работать.
Если данных не много, то лучше сделать перебор, с выбором оптимального варианта

Сколько всего может быть чисел?

Автор - MCH
Дата добавления - 16.08.2013 в 13:39
kadekin Дата: Пятница, 16.08.2013, 14:18 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Совершенно верно "берем из второго массива нужный размер и ищем его в первом"оптимизация не нужна. Количество строк в массиве не будет привышать 200 Хотелось бы на VBA макросом в EXCELE
 
Ответить
СообщениеСовершенно верно "берем из второго массива нужный размер и ищем его в первом"оптимизация не нужна. Количество строк в массиве не будет привышать 200 Хотелось бы на VBA макросом в EXCELE

Автор - kadekin
Дата добавления - 16.08.2013 в 14:18
MCH Дата: Суббота, 17.08.2013, 18:01 | Сообщение № 12
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

получилась вот такая UDF, вводить нужно как формулу массива сразу в вертикальный диапазон
Можно легко сделать макросом
К сообщению приложен файл: 0276045.xls (40.0 Kb)
 
Ответить
Сообщениеполучилась вот такая UDF, вводить нужно как формулу массива сразу в вертикальный диапазон
Можно легко сделать макросом

Автор - MCH
Дата добавления - 17.08.2013 в 18:01
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сравнить два массива не одинаковых подбор значений (Формулы)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!