Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: Леся Блиц от 20.02.2018, 22:36

Название: Замена значений заданными уникальными значениями.
Отправлено: Леся Блиц от 20.02.2018, 22:36
Буду благодарна за Вашу помощь.  Есть некий текст состоящий из букв и чисел. Числа в тексте не повторяются. Как заменить эти числа на другие уникальные числа (порядок вставки чисел не важен. Числа имеют разную длину. Числа можно воспринимать как текст, арифметических операций с ними выполняться не будет). Короткий пример во вложении. Есть идея, как это реализовать разбив на отдельные ячейки и заменяя каждую по отдельности, но хотелось бы этого избежать.
Название: Re: Замена значений заданными уникальными значениями.
Отправлено: boa от 21.02.2018, 11:35
Добрый день,
наверное универсальным решением будет макрос

Option Explicit

Function MeSplit(sText As String)
    Dim i&, str$
    str = sText
    For i = 1 To Len(sText)
     If Not IsNumeric(Mid(sText, i, 1)) Then str = Replace(str, Mid(sText, i, 1), " ")
    Next
    MeSplit = Application.WorksheetFunction.Trim(str)
End Function

Function MeReplace(sText As String, ParamArray Values() As Variant)
    Dim i&:
    Dim ArrRep: ArrRep = Split(MeSplit(sText), " ")
    For i = LBound(ArrRep) To UBound(ArrRep)
        sText = Replace(sText, ArrRep(i), Values(0)(i + 1).Value)
    Next
    MeReplace = sText
End Function

во вложении показано какая функция что возвращает
Название: Re: Замена значений заданными уникальными значениями.
Отправлено: Леся Блиц от 21.02.2018, 23:03
Огромное спасибо! То, что надо!
Название: Re: Замена значений заданными уникальными значениями.
Отправлено: Леся Блиц от 22.02.2018, 00:38
К сожалению, не учла я тот момент, что ячейка не может вместить нужного мне количества символов для задания исходного перерабатываемого текста((
Название: Re: Замена значений заданными уникальными значениями.
Отправлено: boa от 22.02.2018, 10:01
вам мало 32 767 знаков (https://support.office.com/ru-RU/article/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8-%D0%B8-%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-Microsoft-Excel-1672b34d-7043-467e-8e27-269d656771c3#ID0EBABAAA=2016,_2013)?