Без лишних предисловий, сразу к делу. Есть таблица, в которой есть некоторые данные (числовые коды, номера). Появилась необходимость перенести эти данные в другие ячейки, но с изменением формата + корректировкой.
Допустим есть у нас 11-значный код: 12345678901 и он в формате "Дополнительный". Необходимо перенести его значение в соседнюю (или не обязательно) ячейку с изменением формата на "числовой" с разделением групп разрядов, чтобы в итоге он приобрел такой вид: 5 678 901. Важно! Иногда в одной ячейке более 1-го кода (до 5,6), разделённым между собой запятыми. Необходимо перенести ВСЕ без исключения коды, а не только первый, то есть правило должно применяться ко всем донорам.
Пользоваться функцией ВПР уже научился, а вот добавлять в неё дополнительные функции и правила покамест не умею.
Буду признателен любой подсказке.
Всем доброго времени суток!
Без лишних предисловий, сразу к делу. Есть таблица, в которой есть некоторые данные (числовые коды, номера). Появилась необходимость перенести эти данные в другие ячейки, но с изменением формата + корректировкой.
Допустим есть у нас 11-значный код: 12345678901 и он в формате "Дополнительный". Необходимо перенести его значение в соседнюю (или не обязательно) ячейку с изменением формата на "числовой" с разделением групп разрядов, чтобы в итоге он приобрел такой вид: 5 678 901. Важно! Иногда в одной ячейке более 1-го кода (до 5,6), разделённым между собой запятыми. Необходимо перенести ВСЕ без исключения коды, а не только первый, то есть правило должно применяться ко всем донорам.
Пользоваться функцией ВПР уже научился, а вот добавлять в неё дополнительные функции и правила покамест не умею.
Спасибо. Ваша формула достаточно проста, но применима только в том случае, если в ячейке одно значение. По крайней мере при 2х и более значениях она у меня работать переставала (выводя результат первого значения, и не применяя правило ко всем остальным).
=ЕСЛИОШИБКА(ОСТАТ(ПСТР(ПОДСТАВИТЬ(","&$A1;",";ПОВТОР(" ";99));99*СТОЛБЕЦ(A1);99);10^7);"") К сообщению приложен файл: 2014932.xls(26Kb)
У вас формула посложнее, мне нужно будет посидеть, подумать, и понять зависимость применяемых правил. Все работает (в приложенном вами файле), но есть ли возможность выводить результат в одну ячейку, снова таки разделяя запятыми? Пример: 32111234567, 32111234568 и в результате применения формулы получаем в соседней ячейке 2 значения в формате: 1 234 567, 1 234 568. Подойдет даже без применения правила формата ячейки (это можно будет сделать после), то есть даже если в итоге будет: 1234567, 1234568.
Спасибо. Ваша формула достаточно проста, но применима только в том случае, если в ячейке одно значение. По крайней мере при 2х и более значениях она у меня работать переставала (выводя результат первого значения, и не применяя правило ко всем остальным).
=ЕСЛИОШИБКА(ОСТАТ(ПСТР(ПОДСТАВИТЬ(","&$A1;",";ПОВТОР(" ";99));99*СТОЛБЕЦ(A1);99);10^7);"") К сообщению приложен файл: 2014932.xls(26Kb)
У вас формула посложнее, мне нужно будет посидеть, подумать, и понять зависимость применяемых правил. Все работает (в приложенном вами файле), но есть ли возможность выводить результат в одну ячейку, снова таки разделяя запятыми? Пример: 32111234567, 32111234568 и в результате применения формулы получаем в соседней ячейке 2 значения в формате: 1 234 567, 1 234 568. Подойдет даже без применения правила формата ячейки (это можно будет сделать после), то есть даже если в итоге будет: 1234567, 1234568.IDK
применима только в том случае, если в ячейке одно значение
IDK, вот вариант , расписанный по шагам на трёх закладках. Результат на листе "Шаг 2_Формула ПСТР" (ячейки D-F), ошибки скрыты с помощью УФ. В этом варианте выводится по одному значению в каждую ячейку.
применима только в том случае, если в ячейке одно значение
IDK, вот вариант , расписанный по шагам на трёх закладках. Результат на листе "Шаг 2_Формула ПСТР" (ячейки D-F), ошибки скрыты с помощью УФ. В этом варианте выводится по одному значению в каждую ячейку.Che79
Function Перенос$(s$) With CreateObject("vbscript.regexp") .Pattern = "(\d{1,3}(?=\d{4}))|\d+" .Global = True s = .Replace(StrReverse(s), "$1 ") End With Перенос = StrReverse(Application.Trim(s)) End Function
[/vba]
Вариант с UDF [vba]
Код
Function Перенос$(s$) With CreateObject("vbscript.regexp") .Pattern = "(\d{1,3}(?=\d{4}))|\d+" .Global = True s = .Replace(StrReverse(s), "$1 ") End With Перенос = StrReverse(Application.Trim(s)) End Function
IDK, вот вариант , расписанный по шагам на трёх закладках. Результат на листе "Шаг 2_Формула ПСТР" (ячейки D-F), ошибки скрыты с помощью УФ. В этом варианте выводится по одному значению в каждую ячейку.
Спасибо, но в сущности это ничего не меняет. Я "за" сведения к минимуму кол-ва действий для достижения необходимого результата, собственно поэтому и спросил, можно ли это сделать поячеечно, чтобы формула/макрос проходила/проходил каждую ячейку, определяла/определял коды, выполняла/выполнял набор операций и выводила/выводил результат, снова же, в одну, скажем, соседнюю ячейку.
krosav4ig, вот! Это оно! То, что нужно! Мне вообще без разницы, каким способом будет реализован перенос и изменение, и если для этого нужна пользовательская функция, реализованная в VBA, то пусть так и будет. Отличный вариант, благодарю!
IDK, вот вариант , расписанный по шагам на трёх закладках. Результат на листе "Шаг 2_Формула ПСТР" (ячейки D-F), ошибки скрыты с помощью УФ. В этом варианте выводится по одному значению в каждую ячейку.
Спасибо, но в сущности это ничего не меняет. Я "за" сведения к минимуму кол-ва действий для достижения необходимого результата, собственно поэтому и спросил, можно ли это сделать поячеечно, чтобы формула/макрос проходила/проходил каждую ячейку, определяла/определял коды, выполняла/выполнял набор операций и выводила/выводил результат, снова же, в одну, скажем, соседнюю ячейку.
krosav4ig, вот! Это оно! То, что нужно! Мне вообще без разницы, каким способом будет реализован перенос и изменение, и если для этого нужна пользовательская функция, реализованная в VBA, то пусть так и будет. Отличный вариант, благодарю!IDK