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

Вход

Регистрация

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

 

= Мир MS Excel/Сократить массив по условию ("выколоть" значения). - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Сократить массив по условию ("выколоть" значения).
Rioran Дата: Понедельник, 09.06.2014, 11:32 | Сообщение № 1
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Всем привет!

Как я понимаю, массивы возвращают несколько последовательных значений. И возник философский вопрос, пока без практического применения. Интересует операция, которая позволяла бы из массива длинной, например, в 5 значений (от 1 до 5 цифры), получить массив длинной в 3 значения, "выколов" два по какому-либо условию (например, хотим убрать 3 и 4 цифры).

Решение строго БЕЗ VBA.

Пока разобрался только как "подсветить" массивно неугодные значения:

Код
=ЕОШИБКА(ПОИСКПОЗ({1;2;3;4;5};{3;4};0))
К сообщению приложен файл: massive_task.xlsx (12.4 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеВсем привет!

Как я понимаю, массивы возвращают несколько последовательных значений. И возник философский вопрос, пока без практического применения. Интересует операция, которая позволяла бы из массива длинной, например, в 5 значений (от 1 до 5 цифры), получить массив длинной в 3 значения, "выколов" два по какому-либо условию (например, хотим убрать 3 и 4 цифры).

Решение строго БЕЗ VBA.

Пока разобрался только как "подсветить" массивно неугодные значения:

Код
=ЕОШИБКА(ПОИСКПОЗ({1;2;3;4;5};{3;4};0))

Автор - Rioran
Дата добавления - 09.06.2014 в 11:32
vikttur Дата: Понедельник, 09.06.2014, 11:42 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Неугодные - значения или положение значений? Т.е. если 3 встречается в массиве более одного раза - удалять все?
 
Ответить
СообщениеНеугодные - значения или положение значений? Т.е. если 3 встречается в массиве более одного раза - удалять все?

Автор - vikttur
Дата добавления - 09.06.2014 в 11:42
Rioran Дата: Понедельник, 09.06.2014, 11:58 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
vikttur, именно значения пока (положение тоже звучит заманчиво).

Т.е. если 3 встречается в массиве более одного раза - удалять все?

Не совсем. Есть два разных массива, мы их сравниваем друг с другом. Если большой массив содержит значения, которые есть в маленьком массиве, то мы все совпадения "выкалываем". И таким образом уменьшаем большой массив.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеvikttur, именно значения пока (положение тоже звучит заманчиво).

Т.е. если 3 встречается в массиве более одного раза - удалять все?

Не совсем. Есть два разных массива, мы их сравниваем друг с другом. Если большой массив содержит значения, которые есть в маленьком массиве, то мы все совпадения "выкалываем". И таким образом уменьшаем большой массив.

Автор - Rioran
Дата добавления - 09.06.2014 в 11:58
китин Дата: Понедельник, 09.06.2014, 12:13 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7035
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
так,наверное
Код
=ИНДЕКС($B$1:$F$1;;НАИМЕНЬШИЙ(ЕСЛИ(($B$1:$F$1<>$B$2)*($B$1:$F$1<>$C$2);СТОЛБЕЦ($B$1:$F$1)-1);СТОЛБЕЦ(A1)))
[u]само собой массивная


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Понедельник, 09.06.2014, 12:15
 
Ответить
Сообщениетак,наверное
Код
=ИНДЕКС($B$1:$F$1;;НАИМЕНЬШИЙ(ЕСЛИ(($B$1:$F$1<>$B$2)*($B$1:$F$1<>$C$2);СТОЛБЕЦ($B$1:$F$1)-1);СТОЛБЕЦ(A1)))
[u]само собой массивная

Автор - китин
Дата добавления - 09.06.2014 в 12:13
Pelena Дата: Понедельник, 09.06.2014, 12:42 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Классический вариант
Код
=ЕСЛИОШИБКА(ИНДЕКС($B$1:$F$1;НАИМЕНЬШИЙ(ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ($B$1:$F$1;$B$2:$C$2;0));СТОЛБЕЦ($A$1:$E$1));СТОЛБЕЦ(A1)));"")
К сообщению приложен файл: 8072813.xlsx (12.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКлассический вариант
Код
=ЕСЛИОШИБКА(ИНДЕКС($B$1:$F$1;НАИМЕНЬШИЙ(ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ($B$1:$F$1;$B$2:$C$2;0));СТОЛБЕЦ($A$1:$E$1));СТОЛБЕЦ(A1)));"")

Автор - Pelena
Дата добавления - 09.06.2014 в 12:42
vikttur Дата: Понедельник, 09.06.2014, 13:01 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Вы куда? Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.
Сокращенный не получится, только со значениями 0 или логическими ЛОЖЬ вместо неугодных. Но на лист можно выгрузить сокращенный.
Или это я неправильно понял?
 
Ответить
СообщениеВы куда? Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.
Сокращенный не получится, только со значениями 0 или логическими ЛОЖЬ вместо неугодных. Но на лист можно выгрузить сокращенный.
Или это я неправильно понял?

Автор - vikttur
Дата добавления - 09.06.2014 в 13:01
китин Дата: Понедельник, 09.06.2014, 13:05 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 7035
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Если большой массив содержит значения, которые есть в маленьком массиве, то мы все совпадения "выкалываем". И таким образом уменьшаем большой массив.

да и в примере у Романа показано,что надо просто убраить 3 и 4.не?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Если большой массив содержит значения, которые есть в маленьком массиве, то мы все совпадения "выкалываем". И таким образом уменьшаем большой массив.

да и в примере у Романа показано,что надо просто убраить 3 и 4.не?

Автор - китин
Дата добавления - 09.06.2014 в 13:05
vikttur Дата: Понедельник, 09.06.2014, 13:09 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

В примере данные почему-то вставлены массивом. Вот и решил, что нужно обрабатывать виртуальные.
 
Ответить
СообщениеВ примере данные почему-то вставлены массивом. Вот и решил, что нужно обрабатывать виртуальные.

Автор - vikttur
Дата добавления - 09.06.2014 в 13:09
ikki Дата: Понедельник, 09.06.2014, 13:12 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
строго БЕЗ VBA.
шо за каприз? :)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
строго БЕЗ VBA.
шо за каприз? :)

Автор - ikki
Дата добавления - 09.06.2014 в 13:12
Pelena Дата: Понедельник, 09.06.2014, 13:16 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
шо за каприз?

Роман "подсел" на массивы :D


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
шо за каприз?

Роман "подсел" на массивы :D

Автор - Pelena
Дата добавления - 09.06.2014 в 13:16
vikttur Дата: Понедельник, 09.06.2014, 13:16 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

[offtop]Это не каприз - ущемление![/offtop]
 
Ответить
Сообщение[offtop]Это не каприз - ущемление![/offtop]

Автор - vikttur
Дата добавления - 09.06.2014 в 13:16
Rioran Дата: Понедельник, 09.06.2014, 14:03 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
китин, Ваша формула возвращает мне ряд единичек.

Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.
Да, задача именно в этом. Неужели нет возможности сократить количество элементов массива на физическом уровне?

Pelena, Ваша формула, в принципе, подходит, так как могу представить способы работы с первыми Х элементами массива. Попробую по шагам понять принцип работы, а Вы поправьте, если что =)



Роман "подсел" на массивы
Воу, меня видят насквозь =)

строго БЕЗ VBA.
шо за каприз?
С моей точки зрения это было бы сильным упрощением для задачи =) Т.к. готовые формулы Excel ограничены, а для VBA предела нет =) В том смысле, что верти имеющуюся объектную модель как хочешь.

***

Елена, Ваша формула работает даже с текстом =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 09.06.2014, 14:10
 
Ответить
Сообщениекитин, Ваша формула возвращает мне ряд единичек.

Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.
Да, задача именно в этом. Неужели нет возможности сократить количество элементов массива на физическом уровне?

Pelena, Ваша формула, в принципе, подходит, так как могу представить способы работы с первыми Х элементами массива. Попробую по шагам понять принцип работы, а Вы поправьте, если что =)



Роман "подсел" на массивы
Воу, меня видят насквозь =)

строго БЕЗ VBA.
шо за каприз?
С моей точки зрения это было бы сильным упрощением для задачи =) Т.к. готовые формулы Excel ограничены, а для VBA предела нет =) В том смысле, что верти имеющуюся объектную модель как хочешь.

***

Елена, Ваша формула работает даже с текстом =)

Автор - Rioran
Дата добавления - 09.06.2014 в 14:03
Pelena Дата: Понедельник, 09.06.2014, 14:10 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
поправьте, если что

Всё верно, только ссылка правильно называется не динамическая, а относительная (но это я так, придираюсь)

Роман, Вы пользуетесь волшебной клавишей F9, чтобы посмотреть работу формулы по частям? Очень полезная вещь


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
поправьте, если что

Всё верно, только ссылка правильно называется не динамическая, а относительная (но это я так, придираюсь)

Роман, Вы пользуетесь волшебной клавишей F9, чтобы посмотреть работу формулы по частям? Очень полезная вещь

Автор - Pelena
Дата добавления - 09.06.2014 в 14:10
Michael_S Дата: Понедельник, 09.06.2014, 14:14 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Здесь где-то есть тема про виртуальные массивы через ИНДЕКС, ВПР и т.п.
Нужно смотреть в эту сторону.
 
Ответить
СообщениеЗдесь где-то есть тема про виртуальные массивы через ИНДЕКС, ВПР и т.п.
Нужно смотреть в эту сторону.

Автор - Michael_S
Дата добавления - 09.06.2014 в 14:14
китин Дата: Понедельник, 09.06.2014, 14:36 | Сообщение № 15
Группа: Модераторы
Ранг: Экселист
Сообщений: 7035
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Rioran, ?????
К сообщению приложен файл: Rioran.xlsx (9.4 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеRioran, ?????

Автор - китин
Дата добавления - 09.06.2014 в 14:36
Rioran Дата: Понедельник, 09.06.2014, 14:51 | Сообщение № 16
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Rioran, ?????

китин, упс, кажется я спалил свои кривые руки =) Ваша формула хорошо работает и заточена под конкретные значения. Как я понимаю, Вы логически "выкалываете" строго заданные значения:
Код
($B$1:$F$1<>$B$2)*($B$1:$F$1<>$C$2)

******
китин, я понял, в чем была заминка =) Я вводил массивную формулу сразу на все 5 ячеек, а Вы прописывали её на каждую конкретную отдельно.

Роман, Вы пользуетесь волшебной клавишей F9, чтобы посмотреть работу формулы по частям?

Елена, у меня F9 пересчитывает всю книгу. Я пользуюсь клавишей "Вычислить формулу" закладки "Формулы".


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 09.06.2014, 14:58
 
Ответить
Сообщение
Rioran, ?????

китин, упс, кажется я спалил свои кривые руки =) Ваша формула хорошо работает и заточена под конкретные значения. Как я понимаю, Вы логически "выкалываете" строго заданные значения:
Код
($B$1:$F$1<>$B$2)*($B$1:$F$1<>$C$2)

******
китин, я понял, в чем была заминка =) Я вводил массивную формулу сразу на все 5 ячеек, а Вы прописывали её на каждую конкретную отдельно.

Роман, Вы пользуетесь волшебной клавишей F9, чтобы посмотреть работу формулы по частям?

Елена, у меня F9 пересчитывает всю книгу. Я пользуюсь клавишей "Вычислить формулу" закладки "Формулы".

Автор - Rioran
Дата добавления - 09.06.2014 в 14:51
Pelena Дата: Понедельник, 09.06.2014, 14:57 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
F9 пересчитывает всю книгу

А Вы попробуйте в строке формул выделить часть формулы, например, ЕОШИБКА(ПОИСКПОЗ($B$1:$F$1;$B$2:$C$2;0)) и нажать F9. Чтобы вернуть исходный вид формулы, нажимаем ESC


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
F9 пересчитывает всю книгу

А Вы попробуйте в строке формул выделить часть формулы, например, ЕОШИБКА(ПОИСКПОЗ($B$1:$F$1;$B$2:$C$2;0)) и нажать F9. Чтобы вернуть исходный вид формулы, нажимаем ESC

Автор - Pelena
Дата добавления - 09.06.2014 в 14:57
Rioran Дата: Понедельник, 09.06.2014, 15:02 | Сообщение № 18
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Pelena, вау, полезное колдовство! =) Ребят, с Вашей помощью моя магия набирает силу.

Что ж, похоже, есть возможность понять, как эти сложные конструкции работают. А вот как бы самому стать художником... Задачек, может, от простого к сложному где найти...


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеPelena, вау, полезное колдовство! =) Ребят, с Вашей помощью моя магия набирает силу.

Что ж, похоже, есть возможность понять, как эти сложные конструкции работают. А вот как бы самому стать художником... Задачек, может, от простого к сложному где найти...

Автор - Rioran
Дата добавления - 09.06.2014 в 15:02
MCH Дата: Понедельник, 09.06.2014, 20:02 | Сообщение № 19
Группа: Админы
Ранг: Старожил
Сообщений: 2008
Репутация: 752 ±
Замечаний: ±

Вы куда? Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.

Формула возвращающая горизонтальный массив из трех элементов
Код
=ИНДЕКС(1:1;ТРАНСП(Ч(ИНДЕКС(НАИМЕНЬШИЙ(ЕСЛИ(ЕНД(ПОИСКПОЗ(B1:F1;B2:F2;));СТОЛБЕЦ(B1:F1));СТРОКА(A$1:ИНДЕКС(A:A;СЧЁТЗ(B1:F1)-СУММ(СЧЁТЕСЛИ(B1:F1;B2:F2)))));))))

Не думаю, что у данного решения может быть практическое применение.
Исключительно ради спортивного интереса.
К сообщению приложен файл: 2609831.xlsx (12.4 Kb)


Сообщение отредактировал MCH - Понедельник, 09.06.2014, 20:04
 
Ответить
Сообщение
Вы куда? Задача: есть два массива (виртуальных). Получить виртуальный, но сокращенный.

Формула возвращающая горизонтальный массив из трех элементов
Код
=ИНДЕКС(1:1;ТРАНСП(Ч(ИНДЕКС(НАИМЕНЬШИЙ(ЕСЛИ(ЕНД(ПОИСКПОЗ(B1:F1;B2:F2;));СТОЛБЕЦ(B1:F1));СТРОКА(A$1:ИНДЕКС(A:A;СЧЁТЗ(B1:F1)-СУММ(СЧЁТЕСЛИ(B1:F1;B2:F2)))));))))

Не думаю, что у данного решения может быть практическое применение.
Исключительно ради спортивного интереса.

Автор - MCH
Дата добавления - 09.06.2014 в 20:02
vikttur Дата: Понедельник, 09.06.2014, 20:23 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Как вариант виртуальной обработки массивов:
Код
=ИНДЕКС({1;2;3;4;5};НАИМЕНЬШИЙ(ЕСЛИ(1-ЧАСТОТА({3;4};{1;2;3;4;5});ТРАНСП({1;2;3;4;5;ЛОЖЬ}));СТОЛБЕЦ(A1)))

Неувязка: ЧАСТОТА выдает массив больше на одну позицию.
 
Ответить
СообщениеКак вариант виртуальной обработки массивов:
Код
=ИНДЕКС({1;2;3;4;5};НАИМЕНЬШИЙ(ЕСЛИ(1-ЧАСТОТА({3;4};{1;2;3;4;5});ТРАНСП({1;2;3;4;5;ЛОЖЬ}));СТОЛБЕЦ(A1)))

Неувязка: ЧАСТОТА выдает массив больше на одну позицию.

Автор - vikttur
Дата добавления - 09.06.2014 в 20:23
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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