Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как обработать элементы массива по условию формулой
 
На входе текстовый массив. Пример {"обработать":"пропустить":"обработать":"пропустить"} (значение и количество задано условно)
Необходимо обработать массив по условию. Условие равенство элемента массива заданной строковой константе "обработать".
Действие "добавить к элементу массива  строку "-обработан"
На выходе требуется получить массив {"обработать-обработан":"пропустить":"обработать-обработан":"пропустить"}
Хотелось бы видеть подходы к решению подобных задач.
Благодарю
 
=SUBSTITUTE({"обработать";"пропустить";"обработать";"пропустить"};"обработать";"обработать-обработан")

Только если это соединить с этим https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=106774&TITLE_SEO=106774-kak-preobrazovat-tekst-v-massiv-po-razdelitelyu&tags=checkbox&buf_fid=1
то
=SUBSTITUTE(a1;"обработать";"обработать-обработан")
Изменено: БМВ - 11 Июл 2018 18:51:12
 
простой подход: считываешь данные в переменную, Разбиваешь на массив по разделителю (эти два действия можно выполнить одной строкой)
обрабатываешь в цикле с проверкой и если надо выполнением условий
оформить UDF
Изменено: Александр Моторин - 11 Июл 2018 17:58:40
 
Александр Моторин, ТС упомянул снова в теме что интересует формульный подход.
Изменено: БМВ - 11 Июл 2018 17:59:41
 
Просто Userdo, из какой то очень секретной службы он не может разместить в эксель даже намека на данные которые обрабатывает они очень секретны и задание его тоже секретно дабы из массива данных можно было вычленить кодовые слова и запутать шпиона путём подмены одних понятий другими
Лень двигатель прогресса, доказано!!!
 
Off
Сергей, иногда попытка решить задачу в общем виде позволяет упростить  как тут, а порой совсем усложнить. :-)
Изменено: БМВ - 11 Июл 2018 19:19:03
 
Михаил я просто не понимаю в чем фишка на сайте уже куча примеров когда пытаются записатся на удаление гланд через  проктолога а когда с пытками с использованием « угроз» прикладывают пример «анализы» оказывается что можно решить проблему мазью (замена/поиск результатов подстановочными знаками в. Сумммесли или Поиск)
Лень двигатель прогресса, доказано!!!
 
Сергей, Сергей, ну тут мы погрязнем в философском вопросе. Если рассматривать конкретную тему, как конкретный результат для конкретной задачи, то согласен, Четкая задача - Решение - Результат. Но если говорить о решениях, как деталях конструктора для других решений, то почему б и не решить чисто теоретические задачи . Мне вот не всегда понятно зачем на VBA делать то, что делается формулой и считается также эффективно, но кто знает, когда что выстрелит.

Виктор, с мобилки в метро писал, там не все так просто, и в мобилке и в метро :-). ссыоку Исправил.
Изменено: БМВ - 11 Июл 2018 19:58:48
 
Михаил я офтоплю тоже на телефоне согласен с что можно теоретически летать через марс с одной точки земли на другую но по факту то человек хочет доехать до следующей остановки на автобусе но при этом говорит вот я читал что через марс это будет быстрее но по факту я вам путь не покажу но он есть теоретически через пространство и время используя теорию черной дыры
Лень двигатель прогресса, доказано!!!
 
Off
Сергей, реальность такова, что через марс может и ближе и быстрее :-(  . Cижу как-то в Новосибе в командировке.  Звонит начальник, ты говорит на обратном пути заскочи во Владик, там же ближе чем из Питера. Конечно говорю, 20 и 24 часа, один через Шанхай, второй через Москву :-)
Ну а применительно к Excel, то для всего есть свой метод. Я стараюсь максимально долго не уходить в VBA, используя встроенный функционал, (вот пример двух подходов), но всегда смотрю на то что предлагают в альтернативу, чтоб быть готовому к "полету через Марс".
 
Цитата
БМВ написал:
Мне вот не всегда понятно зачем на VBA делать то, что делается формулой
Off. Мне тоже непонятно (хотя я далек от формул). Если не предполагается изменение исходных данных и требуется быстродействие, то проще (и быстрее) макросом вставить в диапазон формулу, а затем заменить на значения специальной вставкой.
Владимир
 
sokol92, Владимир, тема медленно начала клонится к курилке, но боюсь что там она медленно или умрет или приведет к горячему спору Формулчан, макрушников, регулярщиков, сводников , квэрщиков … :-) .
 
Похоже, она умрет, не выходя отсюда )
 
Цитата
БМВ написал:
=SUBSTITUTE({"обработать";"пропустить";"обработать";"пропустить"};"обработать";"обработать-обработан")
Еще раз благодарю! Неожиданно- не знал, что подставить воспринимает массивы. И ведь в справке об этом ни слова подставить

Отступление:
Для понимания результата вычисления части формулы используем ф9, а есть некая горячая клавиша чтобы вернуться на шаг обратно?
 
Userdo, в отличии от некоторых других, SUBSTITUTE и не воспринимает массив, просто его вызывают столько раз, сколько в массиве данных и оно возвращает столько значений сколько раз вызывали Это уже не на уровне функции а на уровни формулы делается в отличии от например MMULT которая возвращает массив.

F9 - только ESC
Страницы: 1
Читают тему (гостей: 1)
Наверх