Помогите, пожалуйста, с буфером обмена. ⁠ ⁠

Помогите, пожалуйста, с буфером обмена. ⁠ ⁠

Добрый день, Пикабу! Суть такая: идёт копипаста сумм из 1С в Excel. Соль в том, что из 1С суммы копируются в виде "1 975 215,12". При вставке Excel не понимает, что это число, т.к. в записи присутствуют пробелы. К тому же, данные копируются в рублях, а результат в таблице нужен в тысячах. Приходится каждое число после вставки редактировать вручную, что, как вы понимаете, занимает много времени. Подскажите, есть ли какая-нить прога, которая автоматически редактирует данные, когда они попадают в буфер обмена?

З.Ы. Импорт из 1С в Excel не предлагать - не вариант.

Копирование из 1С в Excel⁠ ⁠

По долгу службы столкнулся с необходимостью анализировать большой массив данных из 1с в экселе. Гугл док не подходил по ограничению в 1 млн ячеек, да и тормозил он знатно на таких объемах. Эксель справлялся лучше, но вот числа больше 999 из 1С он воспринимал как текст, а с такими никаких вычислений не сделаешь. Текст, который ни сменой формата, ни простыми формулами типа "ЗНАЧЕН" не сделаешь числом.Связано это с особенностью 1С и можно решить проблему на ее стороне: изменить региональные установки самой информационной базы 1С. Для этого потребуется запустить режим "1С:Конфигуратор", где в подменю "Администрирование" выбрать пункт "Региональные установки информационной базы", в открывшейся форме убрать "галку" с флага "Использовать региональные установки текущего сеанса", что позволит установить пробел в поле "Разделитель групп". Но тут нужен доступ, которого у меня не было.

Перебрал все простые формулы и понял, что нужно комбинировать. В итоге методом проб и ошибок была получена вот такая формулка:

она заменяет каждое вхождение символа 160 - пробел, и меняет его на пустоту, а затем превращаем текс в число умножая его на 1

вместо 0 можно выводить ""

Вдруг кому будет полезно, многие работают в 1С и Экселе

Копирование в Excel не отправляет данные в буфер обмена⁠ ⁠

Всем доброго дня!

Возникла проблема в Excel'е - при копировании (неважно как, через Ctrl+C, через "копировать" на панели) данные не помещаются в буфер обмена, а при попытке вставить Excel просто зависает секунд на 10-15. В Word'е аналогичная проблема.

Перезагрузка программы не помогает, помогает лишь перезагрузка компа.

Чем может быть вызвана данная проблема и как её можно решить без перезагрузки?

Массовая замена текста формулами в Excel⁠ ⁠

У Николая Павлова вышла новая статья как с помощью формулы произвести массовую замену одного текста (или его фрагмента) на другой по имеющейся таблице подстановок (справочнику). Другими словами - как привести в единый порядок разношёрстый текст в таблице Excel.

Предположим, что у вас имеется список, в котором с разной степенью "пряморукости" записаны исходные данные - например, адреса или названия компаний:

Хорошо видно, что один и тот же город или компания тут присутствуют в разношёрстных вариантах, что, очевидно, будет создавать массу проблем при работе с этими таблицами в будущем. И если чуть подумать, то можно найти массу примеров похожих задач из других областей.

Что же делать? Не заменять же вручную 100500 раз кривой текст на правильный через окошко "Найти и заменить" или нажимая Ctrl+H?

Первое, что приходит в голову в подобной ситуации - произвести массовую замену по составленному заранее справочнику соответствия неправильных и правильных вариантов - вроде такого:

К сожалению, при очевидной распространенности подобной задачи, в Microsoft Excel не существует простых встроенных способов для её решения. Для начала, давайте разберёмся, как это делать формулами, без привлечения "тяжелой артиллерии" в виде макросов на VBA или Power Query.

Случай 1. Массовая полная замена

Начнём с относительно простого случая - ситуации, когда нужно заменить старый кривой текст на новый полностью.Предположим, что у нас есть две таблицы:

В первой - исходные разномастные названия компаний. Во второй - справочник соответствия. Если находим в названии компании в первой таблице любое слово из столбца Найти, то нужно полностью заменить это кривое название на правильное - из столбца Заменить второй таблицы-справочника.Для удобства:Обе таблицы преобразованы в динамические ("умные") с помощью сочетания клавиш Ctrl+T или командой Вставка - Таблица (Insert - Table).

Эта функция определяет входит ли заданная подстрока (первый аргумент - все значения из столбца Найти) в исходный текст (первая компания из таблицы данных) и должна вывести на выходе либо порядковый номер символа, начиная с которого текст был найден, либо ошибку если подстрока не обнаружена.

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

Полученный массив результатов означает, что в исходном кривом названии компании (ГК Морозко ОАО) из всех значений в столбце Найти нашлось только второе (Морозко), причём начиная с 4-го по счёту символа.

Теперь добавим к нашей формуле функцию ПРОСМОТР (LOOKUP):

У этой функции три аргумента:Искомое значение - можно использовать любое достаточно большое число (главное, чтобы оно превышало длину любого текста в исходных данных)Просматриваемый_вектор - тот диапазон или массив, где мы ищем искомое значение. Здесь это введённая ранее функция НАЙТИ, возвращающая массив Вектор_результатов - диапазон, откуда мы хотим вернуть значение, если искомое значение найдено в соответствующей ячейке. Здесь это правильные названия из столбца Заменить нашей таблицы-справочника.

Главная и неочевидная фишка тут в том, что функция ПРОСМОТР при отсутствии точного совпадения всегда ищет ближайшее наименьшее (предыдущее) значение. Поэтому, указав в качестве искомого значения любое здоровенное число (например 9999), мы заставим ПРОСМОТР находить ячейку с ближайшим наименьшим числом (4) в массиве и выдавать соответствующее ей значение из вектора результатов, т.е. правильное название компании из столбца Заменить.

Второй нюанс заключается в том, что, технически, наша формула является формулой массива, т.к. функция НАЙТИ возвращает в качестве результатов не одно, а массив из трёх значений. Но поскольку функция ПРОСМОТР поддерживает массивы "из коробки", то нам не придётся вводить эту формулу как классическую формулу массива - с помощью сочетания клавиш Ctrl+Shift+Enter. Достаточно будет простого Enter.Вот и всё. Надеюсь вы ухватили логику.

Осталось перенести готовую формулу первую ячейку B2 столбца Исправлено - и наша задача решена!

Случай 2. Массовая частичная замена

Этот случай чуть похитрее. Снова имеем две "умных" таблицы:

Первая таблица с криво записанными адресами, которые нужно исправить (я назвал её Данные2). Вторая таблица - справочник, по которому нужно произвести частичную замену подстроки внутри адреса (я назвал эту таблицу Замены2).

Принципиальное отличие тут в том, что нужно заменять только фрагмент исходных данных - например, в первом адресе неправильный "С-Петербург" на правильный "Санкт-Петербург", оставив остальную часть адреса (индекс, улицу, дом) в исходном виде.

Готовая формула будет выглядеть так (для удобства восприятия я разделил её на насколько строк с помощью Alt+Enter):

Основную работу здесь выполняет стандартная Excel'евская текстовая функция ПОДСТАВИТЬ (SUBSTITUTE), у которой 3 аргумента:Исходный текст - первый кривой адрес из столбца АдресЧто ищем - тут мы используем трюк с функцией ПРОСМОТР (LOOKUP) из предыдущего способа, чтобы вытащить значение из столбца Найти, которое входит как фрагмент в кривой адрес.На что заменить - аналогичным образом находим соответствующее ему правильное значение из столбца Заменить.

Вводить эту формулу с Ctrl+Shift+Enter здесь тоже не нужно, хотя она и является, по-сути, формулой массива.

И хорошо видно (см. ошибки #Н/Д на предыдущей картинке), что такая формула, при всей её элегантности, обладает и парой недостатков:- Функция ПОДСТАВИТЬ является регистрочувствительной, поэтому "Спб" в предпоследней строке так и не нашлось в таблице замен. Для решения этой проблемы можно либо использовать функцию ЗАМЕНИТЬ (REPLACE), либо предварительно привести обе таблицы к одному регистру.- Если текст изначально правильный или в нём нет ни одного фрагмента на замену (последняя строка), то наша формула выдает ошибку. Этот момент можно нейтрализовать перехватом и заменой ошибок с помощью функции ЕСЛИОШИБКА (IFERROR):

- Если в исходном тексте встречается сразу несколько фрагментов из справочника, то наша формула заменяет только последний (в 8-й строке Лиговский "проспект" заменился на "пр-т", а вот "С-Пб" на "Санкт-Петербург" уже нет, т.к. "С-Пб" стоит выше в справочнике). Эту проблему можно решить повторным прогоном нашей же формулой, но уже по столбцу Исправлено:

Не идеально и, местами, громоздко, но гораздо лучше, чем однообразная замена вручную, правда? :)

📎📎📎📎📎📎📎📎📎📎