Страницы: 1
RSS
Сцепка всех значений в ячейки разделенные запятой
 
Здравствуйте,

Подскажите пожалуйста можно ли с помощью формулы сделать сцепку следющим образом:

Есть две ячейки и значения в них:
          A1            |               А2           |
---------------------------------------------------
            7            |    456, 332, 190     |
Необходимо сцепить  таким образом, чтобы получилось: 7456, 7332, 7190
То есть необходимо сцепить значение из ячейки А1 с каждым значеним из ячейки А2 разделенные запятой.

Такое возможно сделать с помощью формулы ?
 
Функция ПОДСТАВИТЬ: заменить ", " на  ", "&ячейка.
И еще СЦЕПИТЬ для подстановки значения слева.
 
Огромнейшее Спасибо!
 
Android1, здравствуйте! Как раз недавно писал для себя  ;)
парочка UDF, если интересно…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Согласитесь, что это проще :)
Код
=СЦЕПИТЬ(B2;ПОДСТАВИТЬ(C2;",";","&B2))
 
Цитата
Android1 написал:
что это проще
=B2&ПОДСТАВИТЬ(C2;",";","&B2))
Лень двигатель прогресса, доказано!!!
 
Android1, если вы мне, то мою вводить быстрее и все аргументы достаточно указать 1 раз + проверки есть — я для этого, собсна, и пишу UDF  :D
а для вашего случая и вообще можно Optional поменять на нужные вам и ограничиться всего 2мя аргументами  ;)
Изменено: Jack Famous - 02.04.2018 15:33:01
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, проверка на ошибки ест время) Учитывая, что это UDF, и может использоваться на большом кол-ве строк... Если не верите создайте цикл на 1кк повторов и поставьте в него On Error Resume Next.
 
Anchoret, ещё бы я вам не верил :D  не - ну может, конечно, такое быть, но тут вы правы))

То, что проверки едят время - очевидно. Типа, "просто вычислить" или сначала проверить (имеет ли смысл вычислять и/или не будет ли это ошибкой) — при прочих равных, дополнительные действия, очевидно, будут "съедать" время. Тут, как и всегда, встаёт вопрос о балансе «удобство-скорость-гибкость». К слову, я делал эти UDF для выборочных вычислений и они мгновенно делали свою работу…
Однако, заменив мои массивы на Replace$, полагаю, будет нехилый выигрыш на объёмах 100к+ (кому интересно - проверяйте)

Вариант вышеизложенного выложу завтра в этот ответ в течение дня  ;)

Доброго времени чуток, Планетяне!
Код
Public Function Android_MergeOneWithMany(WF_One As String, WF_Many As String) As String
Android_MergeOneWithMany = WF_One & ", " & Replace$(WF_Many, ", ", ", " & WF_One & ", ")
End Function
в общем, вот этот код на 30к строк/ячеек на ~25% (грубый подсчёт) быстрее моего решения на массивах.

Решил прокачать свою универсальную UDF:
Код
Public Function PRDX_MergeOneWithMany(WF_One As String, WF_Many As String, Optional WF_delMany As String = "—", Optional WF_delMergeSome As String = "=", Optional WF_delMergeAll As String = "///") As String
On Error GoTo er
    If WF_One = "" Or WF_Many = "" Then GoTo er
PRDX_MergeOneWithMany = WF_One & WF_delMergeSome & Replace$(WF_Many, WF_delMany, WF_delMergeAll & WF_One & WF_delMergeSome)

GoTo fin
er:
PRDX_MergeOneWithMany = ""

fin:
On Error GoTo 0
End Function
Изменено: Jack Famous - 03.04.2018 11:00:03
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх