поиск значения в двух столбцах
Дмитрий
Дата: Понедельник, 25.02.2013, 14:01 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация:
6
±
Замечаний:
0% ±
Добрый день уважаемые форумчане! Есть три столбца значений на листе Excel: A, B, C. В первую строку столбца D нужно выводить значение из некоторой строки столбца B или C, для которой первой и не важно в каком столбце выполняется условие. Условие : берем значение A1 в первой строке столбца A (остальные строки в нем нас не интересуют). В столбце B, начиная с первой, ищем строку, значение в которой больше или равно A1+200. В столбце C, начиная с первой, ищем строку, значение в которой меньше или равно A1-200. При выполнении условия в столбце B или при выполнении условия в столбце C соответствующее значение выводится в первую строку столбца D. То есть выводится первое значение, в котором выполнилось любое из двух указанных выше условий. Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные). Есть небольшая наработка, но она, почему то не хочет работать. Не могли бы Вы, подтолкнуть в нужном направлении???? заранее спасибо за уделённое время.
Добрый день уважаемые форумчане! Есть три столбца значений на листе Excel: A, B, C. В первую строку столбца D нужно выводить значение из некоторой строки столбца B или C, для которой первой и не важно в каком столбце выполняется условие. Условие : берем значение A1 в первой строке столбца A (остальные строки в нем нас не интересуют). В столбце B, начиная с первой, ищем строку, значение в которой больше или равно A1+200. В столбце C, начиная с первой, ищем строку, значение в которой меньше или равно A1-200. При выполнении условия в столбце B или при выполнении условия в столбце C соответствующее значение выводится в первую строку столбца D. То есть выводится первое значение, в котором выполнилось любое из двух указанных выше условий. Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные). Есть небольшая наработка, но она, почему то не хочет работать. Не могли бы Вы, подтолкнуть в нужном направлении???? заранее спасибо за уделённое время. Дмитрий
Ответить
Сообщение Добрый день уважаемые форумчане! Есть три столбца значений на листе Excel: A, B, C. В первую строку столбца D нужно выводить значение из некоторой строки столбца B или C, для которой первой и не важно в каком столбце выполняется условие. Условие : берем значение A1 в первой строке столбца A (остальные строки в нем нас не интересуют). В столбце B, начиная с первой, ищем строку, значение в которой больше или равно A1+200. В столбце C, начиная с первой, ищем строку, значение в которой меньше или равно A1-200. При выполнении условия в столбце B или при выполнении условия в столбце C соответствующее значение выводится в первую строку столбца D. То есть выводится первое значение, в котором выполнилось любое из двух указанных выше условий. Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные). Есть небольшая наработка, но она, почему то не хочет работать. Не могли бы Вы, подтолкнуть в нужном направлении???? заранее спасибо за уделённое время. Автор - Дмитрий Дата добавления - 25.02.2013 в 14:01
Serge_007
Дата: Понедельник, 25.02.2013, 14:22 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
В В 15200, в С 14800 Что выводить? Цитата (Дмитрий )
Правильный ответ 14 600
Почему?
В В 15200, в С 14800 Что выводить? Цитата (Дмитрий )
Правильный ответ 14 600
Почему? Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение В В 15200, в С 14800 Что выводить? Цитата (Дмитрий )
Правильный ответ 14 600
Почему? Автор - Serge_007 Дата добавления - 25.02.2013 в 14:22
Дмитрий
Дата: Понедельник, 25.02.2013, 14:29 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация:
6
±
Замечаний:
0% ±
что произрошло раньше то и верно в первой таблице произошло раньше =<200 тоесть 14600
что произрошло раньше то и верно в первой таблице произошло раньше =<200 тоесть 14600 Дмитрий
Ответить
Сообщение что произрошло раньше то и верно в первой таблице произошло раньше =<200 тоесть 14600 Автор - Дмитрий Дата добавления - 25.02.2013 в 14:29
Дмитрий
Дата: Понедельник, 25.02.2013, 14:31 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация:
6
±
Замечаний:
0% ±
одновременно 15200 и 14800 не может быть
одновременно 15200 и 14800 не может быть Дмитрий
Ответить
Сообщение одновременно 15200 и 14800 не может быть Автор - Дмитрий Дата добавления - 25.02.2013 в 14:31
Serge_007
Дата: Понедельник, 25.02.2013, 14:48 |
Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (Дмитрий )
одновременно 15200 и 14800 не может быть
Цитата (Дмитрий )
Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные)
Цитата (Дмитрий )
что произрошло раньше то и верно
Если "раньше" - это выше в таблице, то так (не оптимизируя, формула массива): Код
=ВЫБОР((МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24))>=МАКС((C1:C24<=A1-200)*C1:C24))+1;ИНДЕКС(B1:B24;ПОИСКПОЗ(МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24));B1:B24;));ИНДЕКС(C1:C24;ПОИСКПОЗ(МАКС((C1:C24<=A1-200)*C1:C24);C1:C24;)))
Цитата (Дмитрий )
одновременно 15200 и 14800 не может быть
Цитата (Дмитрий )
Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные)
Цитата (Дмитрий )
что произрошло раньше то и верно
Если "раньше" - это выше в таблице, то так (не оптимизируя, формула массива): Код
=ВЫБОР((МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24))>=МАКС((C1:C24<=A1-200)*C1:C24))+1;ИНДЕКС(B1:B24;ПОИСКПОЗ(МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24));B1:B24;));ИНДЕКС(C1:C24;ПОИСКПОЗ(МАКС((C1:C24<=A1-200)*C1:C24);C1:C24;)))
Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (Дмитрий )
одновременно 15200 и 14800 не может быть
Цитата (Дмитрий )
Значения в столбцах B и C не подчинены никаким зависимостям (полностью случайные)
Цитата (Дмитрий )
что произрошло раньше то и верно
Если "раньше" - это выше в таблице, то так (не оптимизируя, формула массива): Код
=ВЫБОР((МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24))>=МАКС((C1:C24<=A1-200)*C1:C24))+1;ИНДЕКС(B1:B24;ПОИСКПОЗ(МИН(ЕСЛИ(B1:B24>=A1+200;B1:B24));B1:B24;));ИНДЕКС(C1:C24;ПОИСКПОЗ(МАКС((C1:C24<=A1-200)*C1:C24);C1:C24;)))
Автор - Serge_007 Дата добавления - 25.02.2013 в 14:48
ABC
Дата: Понедельник, 25.02.2013, 14:49 |
Сообщение № 6
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация:
112
±
Замечаний:
0% ±
Excel 2007
массивные формулы замените формуле ИНДЕКС(B1:C24 на ИНДЕКС(C1:C24 Код
=ИНДЕКС(B1:C24;МИН(ПОИСКПОЗ(1;--(B1:B24>=A1+200);0);ПОИСКПОЗ(1;--(C1:C24<=A1-200);0));2)
или так наименьший для D1 Код
=ИНДЕКС(C1:C24;ПОИСКПОЗ(МИН(ЕСЛИ(200<=(B1:B24-C1:C24);B1:B24-C1:C24));B1:B24-C1:C24;0))
массивные формулы замените формуле ИНДЕКС(B1:C24 на ИНДЕКС(C1:C24 Код
=ИНДЕКС(B1:C24;МИН(ПОИСКПОЗ(1;--(B1:B24>=A1+200);0);ПОИСКПОЗ(1;--(C1:C24<=A1-200);0));2)
или так наименьший для D1 Код
=ИНДЕКС(C1:C24;ПОИСКПОЗ(МИН(ЕСЛИ(200<=(B1:B24-C1:C24);B1:B24-C1:C24));B1:B24-C1:C24;0))
ABC
MS Excel 2007 and 2010... ------------------------------- С Уважением, Даулет
Сообщение отредактировал ABC - Понедельник, 25.02.2013, 15:14
Ответить
Сообщение массивные формулы замените формуле ИНДЕКС(B1:C24 на ИНДЕКС(C1:C24 Код
=ИНДЕКС(B1:C24;МИН(ПОИСКПОЗ(1;--(B1:B24>=A1+200);0);ПОИСКПОЗ(1;--(C1:C24<=A1-200);0));2)
или так наименьший для D1 Код
=ИНДЕКС(C1:C24;ПОИСКПОЗ(МИН(ЕСЛИ(200<=(B1:B24-C1:C24);B1:B24-C1:C24));B1:B24-C1:C24;0))
Автор - ABC Дата добавления - 25.02.2013 в 14:49
Дмитрий
Дата: Понедельник, 25.02.2013, 17:35 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация:
6
±
Замечаний:
0% ±
Спасибо всем большое за уделённое время на решение задачи! очень помогли! спасибо!
Спасибо всем большое за уделённое время на решение задачи! очень помогли! спасибо! Дмитрий
Ответить
Сообщение Спасибо всем большое за уделённое время на решение задачи! очень помогли! спасибо! Автор - Дмитрий Дата добавления - 25.02.2013 в 17:35
ВладимирG
Дата: Вторник, 26.02.2013, 08:56 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 136
Репутация:
22
±
Замечаний:
0% ±
2007
Код
=ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););ПОИСКПОЗ(1;(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1-200)*(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1+200);))
Код
=ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););ПОИСКПОЗ(1;(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1-200)*(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1+200);))
ВладимирG
Ответить
Сообщение Код
=ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););ПОИСКПОЗ(1;(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1-200)*(ИНДЕКС(B1:C24;ПОИСКПОЗ(1;(B1:B24<A1+200)*(C1:C24<A1-200););Ч(ИНДЕКС({1;2};)))<A1+200);))
Автор - ВладимирG Дата добавления - 26.02.2013 в 08:56