Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Замена значений в тексте из справочника - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Замена значений в тексте из справочника (Формулы/Formulas)
Замена значений в тексте из справочника
JIexa_74 Дата: Среда, 21.02.2018, 14:22 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Здравствуйте. Подскажите пожалуйста формулу.
Задача следующая:
Есть справочник значений из 2-х столбцов откуда брать данные (A1(на английском), Б1(на русском)).
Столбец "C1" содержит значения через запятую из столбца А1.
Нужно в столбце "E1", отобразить те же значения через запятую из столбца С1, только на русском (т.е. брать значения из столбца "Б1").
Файлик примера прикрепил.

Информация объемная, нужна формула однозначно!

Буду очень благодарен за отклик.
К сообщению приложен файл: _____.xlsx(15.4 Kb)


Сообщение отредактировал JIexa_74 - Среда, 21.02.2018, 14:36
 
Ответить
СообщениеЗдравствуйте. Подскажите пожалуйста формулу.
Задача следующая:
Есть справочник значений из 2-х столбцов откуда брать данные (A1(на английском), Б1(на русском)).
Столбец "C1" содержит значения через запятую из столбца А1.
Нужно в столбце "E1", отобразить те же значения через запятую из столбца С1, только на русском (т.е. брать значения из столбца "Б1").
Файлик примера прикрепил.

Информация объемная, нужна формула однозначно!

Буду очень благодарен за отклик.

Автор - JIexa_74
Дата добавления - 21.02.2018 в 14:22
abtextime Дата: Среда, 21.02.2018, 15:23 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
Сильно проверять некогда, смотрите сами, то, нет?

&"," нужно, чтобы обработать случай Corolla и Corolla Axio, например

Без # некорректно обрабатывается TOYOTA ALLEX

[vba]
Код

Public Sub Transfer()

    For i = 2 To Range("C2").End(xlDown).Row   
        Cells(i, 5).Value = Replace(Cells(i, 3).Value & ",", " ", "#")
    Next i
    For i = 1 To Range("A1").End(xlDown).Row
        Range("E:E").Replace What:=UCase(Cells(i, 1).Value) & ",", Replacement:=Cells(i, 2).Value & ",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        Range("E:E").Replace What:=UCase(Cells(i, 1).Value) & "#", Replacement:=Cells(i, 2).Value & "#", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    For i = 2 To Range("C2").End(xlDown).Row
        Cells(i, 5).Value = Replace(Left(Cells(i, 5).Value, Len(Cells(i, 5).Value) - 1), "#", " ")
    Next i

End Sub

[/vba]
К сообщению приложен файл: 8306539.xlsm(27.5 Kb)


Сообщение отредактировал abtextime - Среда, 21.02.2018, 18:26
 
Ответить
СообщениеСильно проверять некогда, смотрите сами, то, нет?

&"," нужно, чтобы обработать случай Corolla и Corolla Axio, например

Без # некорректно обрабатывается TOYOTA ALLEX

[vba]
Код

Public Sub Transfer()

    For i = 2 To Range("C2").End(xlDown).Row   
        Cells(i, 5).Value = Replace(Cells(i, 3).Value & ",", " ", "#")
    Next i
    For i = 1 To Range("A1").End(xlDown).Row
        Range("E:E").Replace What:=UCase(Cells(i, 1).Value) & ",", Replacement:=Cells(i, 2).Value & ",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        Range("E:E").Replace What:=UCase(Cells(i, 1).Value) & "#", Replacement:=Cells(i, 2).Value & "#", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    For i = 2 To Range("C2").End(xlDown).Row
        Cells(i, 5).Value = Replace(Left(Cells(i, 5).Value, Len(Cells(i, 5).Value) - 1), "#", " ")
    Next i

End Sub

[/vba]

Автор - abtextime
Дата добавления - 21.02.2018 в 15:23
sboy Дата: Среда, 21.02.2018, 15:36 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1872
Репутация: 552 ±
Замечаний: 0% ±

Excel 2010
вариант пользовательской функцией
[vba]
Код
Function JIexa74(txt As String) As String
    txt = Replace(txt, " ", ",", 1, 1)
    arr = Split(txt, ",")
        For i = 0 To UBound(arr)
            With Application: arr(i) = .IfError(.Index(Range("B:B"), .Match(.Trim(arr(i)), Range("A:A"), 0)), ""): End With
        Next
    JIexa74 = Replace(Join(arr, ", "), ",", "", 1, 1)
End Function
[/vba]
К сообщению приложен файл: -5-.xlsm(22.3 Kb)
 
Ответить
Сообщениевариант пользовательской функцией
[vba]
Код
Function JIexa74(txt As String) As String
    txt = Replace(txt, " ", ",", 1, 1)
    arr = Split(txt, ",")
        For i = 0 To UBound(arr)
            With Application: arr(i) = .IfError(.Index(Range("B:B"), .Match(.Trim(arr(i)), Range("A:A"), 0)), ""): End With
        Next
    JIexa74 = Replace(Join(arr, ", "), ",", "", 1, 1)
End Function
[/vba]

Автор - sboy
Дата добавления - 21.02.2018 в 15:36
JIexa_74 Дата: Четверг, 22.02.2018, 10:37 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
sboy, Спасибо большое. Только не работает такой момент."

"MARK II" не переименовывает в МАРК 2
"COROLLA FIELDER" не переименовывает в "КОРОЛЛА ФИЕЛДЕР"

Т.е. если в значении есть слова через пробел, он их не видит...
 
Ответить
Сообщениеsboy, Спасибо большое. Только не работает такой момент."

"MARK II" не переименовывает в МАРК 2
"COROLLA FIELDER" не переименовывает в "КОРОЛЛА ФИЕЛДЕР"

Т.е. если в значении есть слова через пробел, он их не видит...

Автор - JIexa_74
Дата добавления - 22.02.2018 в 10:37
abtextime Дата: Четверг, 22.02.2018, 10:56 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
"MARK II" не переименовывает в МАРК 2
"COROLLA FIELDER" не переименовывает в "КОРОЛЛА ФИЕЛДЕР"

а мой макрос?
 
Ответить
Сообщение
"MARK II" не переименовывает в МАРК 2
"COROLLA FIELDER" не переименовывает в "КОРОЛЛА ФИЕЛДЕР"

а мой макрос?

Автор - abtextime
Дата добавления - 22.02.2018 в 10:56
sboy Дата: Четверг, 22.02.2018, 12:16 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1872
Репутация: 552 ±
Замечаний: 0% ±

Excel 2010
JIexa_74, да вроде все видит

приложите пример, в котором не правильно отрабатывает
К сообщению приложен файл: 7625354.jpg(47.8 Kb)
 
Ответить
СообщениеJIexa_74, да вроде все видит

приложите пример, в котором не правильно отрабатывает

Автор - sboy
Дата добавления - 22.02.2018 в 12:16
JIexa_74 Дата: Суббота, 24.02.2018, 11:46 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
sboy, Просто я пробовал значения без toyota в начале.
Можно поправить макрос согласно этому правилу. приложил файлик.

в столбце " С5" не видит "МАРК 2"
К сообщению приложен файл: -5-1-.xlsm(21.9 Kb)


Сообщение отредактировал JIexa_74 - Суббота, 24.02.2018, 11:47
 
Ответить
Сообщениеsboy, Просто я пробовал значения без toyota в начале.
Можно поправить макрос согласно этому правилу. приложил файлик.

в столбце " С5" не видит "МАРК 2"

Автор - JIexa_74
Дата добавления - 24.02.2018 в 11:46
JIexa_74 Дата: Суббота, 24.02.2018, 11:49 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
abtextime, здравствуйте.

У вас "MARK II" не "превращается" в "МАРК 2"
Но все же спасибо за уделенное время!
 
Ответить
Сообщениеabtextime, здравствуйте.

У вас "MARK II" не "превращается" в "МАРК 2"
Но все же спасибо за уделенное время!

Автор - JIexa_74
Дата добавления - 24.02.2018 в 11:49
JIexa_74 Дата: Суббота, 24.02.2018, 12:56 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
sboy, честно, не думал что можно это все так организовать.

Задача немного усложнилась. Можете помочь написать макрос для такой задачи. В документе в принципе все расписал. примеры даны.
В долгу не останусь!
К сообщению приложен файл: ___.xlsm(29.0 Kb)
 
Ответить
Сообщениеsboy, честно, не думал что можно это все так организовать.

Задача немного усложнилась. Можете помочь написать макрос для такой задачи. В документе в принципе все расписал. примеры даны.
В долгу не останусь!

Автор - JIexa_74
Дата добавления - 24.02.2018 в 12:56
abtextime Дата: Суббота, 24.02.2018, 15:57 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
Посмотрите, так заменяет MARK II ?

[vba]
Код
Public Sub Transfer()

    Dim R As Range
    RC = Range("C2").End(xlDown).Row
    Set R = Range(Cells(2, 5), Cells(RC, 5))
    For i = 2 To RC
        Cells(i, 5).Value = Replace(Cells(i, 3).Value & ",", " ", "#")
    Next i
    For i = 1 To Range("A1").End(xlDown).Row
        R.Replace What:=Replace(UCase(Cells(i, 1).Value), " ", "#"), Replacement:=Replace(Cells(i, 2).Value, " ", "#"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        R.Replace What:=UCase(Cells(i, 1).Value) & ",", Replacement:=Cells(i, 2).Value & ",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

    Next i
    For i = 2 To RC
        Cells(i, 5).Value = Replace(Left(Cells(i, 5).Value, Len(Cells(i, 5).Value) - 1), "#", " ")
    Next i

End Sub
[/vba]

И, да, если Вы действительно готовы оплатить работу специалиста, то сделайте всё цивилизованно - разместите пост в разделе Работа/Фриланс и проведите переговоры в ЛС о работе/сроках/оплате с первым из откликнувшихся в этой теме экспертов.

А "в долгу не останусь" - это слишком абстрактно и мало что добавляет к мотивации (помочь мы можем и без морковки)
К сообщению приложен файл: 8306539-5-.xlsm(27.6 Kb)


Сообщение отредактировал abtextime - Суббота, 24.02.2018, 17:03
 
Ответить
СообщениеПосмотрите, так заменяет MARK II ?

[vba]
Код
Public Sub Transfer()

    Dim R As Range
    RC = Range("C2").End(xlDown).Row
    Set R = Range(Cells(2, 5), Cells(RC, 5))
    For i = 2 To RC
        Cells(i, 5).Value = Replace(Cells(i, 3).Value & ",", " ", "#")
    Next i
    For i = 1 To Range("A1").End(xlDown).Row
        R.Replace What:=Replace(UCase(Cells(i, 1).Value), " ", "#"), Replacement:=Replace(Cells(i, 2).Value, " ", "#"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        R.Replace What:=UCase(Cells(i, 1).Value) & ",", Replacement:=Cells(i, 2).Value & ",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

    Next i
    For i = 2 To RC
        Cells(i, 5).Value = Replace(Left(Cells(i, 5).Value, Len(Cells(i, 5).Value) - 1), "#", " ")
    Next i

End Sub
[/vba]

И, да, если Вы действительно готовы оплатить работу специалиста, то сделайте всё цивилизованно - разместите пост в разделе Работа/Фриланс и проведите переговоры в ЛС о работе/сроках/оплате с первым из откликнувшихся в этой теме экспертов.

А "в долгу не останусь" - это слишком абстрактно и мало что добавляет к мотивации (помочь мы можем и без морковки)

Автор - abtextime
Дата добавления - 24.02.2018 в 15:57
abtextime Дата: Суббота, 24.02.2018, 18:07 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
JIexa_74,

Посмотрите, всё ли правильно

[vba]
Код
PPublic Sub Transfer()

    Dim R As Range
    RC = Range("J3").End(xlDown).Row
    Set R = Range(Cells(2, 12), Cells(RC, 12))
    For i = 3 To RC
        Cells(i, 12).Value = UCase(Replace(Replace(Cells(i, 1).Value, " ", "#"), ",", "$") & "#НА#" & Replace(Cells(i, 9).Value & " " & Cells(i, 10).Value, " ", "#") & " " & Replace(Cells(i, 11).Value, ",", "$")) & ","
    Next i
    
    
    For i = 3 To Range("A3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 1).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 2).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("F3").End(xlDown).Row
        R.Replace What:=UCase(Cells(i, 6).Value) & ",", Replacement:=Cells(i, 7).Value & "$", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("D3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 4).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 5).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    
    For i = 3 To RC
        Cells(i, 12).Value = Replace(Replace(Left(Cells(i, 12).Value, Len(Cells(i, 12).Value) - 1), "#", " "), "$", ",")
    Next i

End Sub
[/vba]
К сообщению приложен файл: -4-.xlsm(39.6 Kb)


Сообщение отредактировал abtextime - Суббота, 24.02.2018, 18:09
 
Ответить
СообщениеJIexa_74,

Посмотрите, всё ли правильно

[vba]
Код
PPublic Sub Transfer()

    Dim R As Range
    RC = Range("J3").End(xlDown).Row
    Set R = Range(Cells(2, 12), Cells(RC, 12))
    For i = 3 To RC
        Cells(i, 12).Value = UCase(Replace(Replace(Cells(i, 1).Value, " ", "#"), ",", "$") & "#НА#" & Replace(Cells(i, 9).Value & " " & Cells(i, 10).Value, " ", "#") & " " & Replace(Cells(i, 11).Value, ",", "$")) & ","
    Next i
    
    
    For i = 3 To Range("A3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 1).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 2).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("F3").End(xlDown).Row
        R.Replace What:=UCase(Cells(i, 6).Value) & ",", Replacement:=Cells(i, 7).Value & "$", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("D3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 4).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 5).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    
    For i = 3 To RC
        Cells(i, 12).Value = Replace(Replace(Left(Cells(i, 12).Value, Len(Cells(i, 12).Value) - 1), "#", " "), "$", ",")
    Next i

End Sub
[/vba]

Автор - abtextime
Дата добавления - 24.02.2018 в 18:07
JIexa_74 Дата: Среда, 28.02.2018, 09:17 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
abtextime, здравствуйте. Похоже что нет.

Результат по макросу вашему в столбце "L"?. Если да, то не совсем верно. Сравните "L4" с "M4".

Модели двс не все раскрылись.

И объясните плз как использовать данный макрос. Пишу в ячейке "=JIexa74", какие колонки выбирать или как?
К сообщению приложен файл: 8498168.xlsm(36.4 Kb)
 
Ответить
Сообщениеabtextime, здравствуйте. Похоже что нет.

Результат по макросу вашему в столбце "L"?. Если да, то не совсем верно. Сравните "L4" с "M4".

Модели двс не все раскрылись.

И объясните плз как использовать данный макрос. Пишу в ячейке "=JIexa74", какие колонки выбирать или как?

Автор - JIexa_74
Дата добавления - 28.02.2018 в 09:17
sboy Дата: Среда, 28.02.2018, 10:15 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 1872
Репутация: 552 ±
Замечаний: 0% ±

Excel 2010
По файлу из сообщения 9
[vba]
Код
Function JIexa74(r As Range) As String
    If r.Count <> 4 Then Exit Function
        With Application
            JIexa74 = .IfError(.Index(Range("B:B"), .Match(r.Cells(1), Range("A:A"), 0)), "") & " ÍÀ "
            JIexa74 = JIexa74 & .IfError(.Index(Range("E:E"), .Match(r.Cells(2), Range("D:D"), 0)), "")
            arr = Split(r.Cells(3), ",")
                For i = 0 To UBound(arr)
                    arr(i) = .IfError(.Index(Range("E:E"), .Match(.Trim(arr(i)), Range("D:D"), 0)), "")
                Next
            JIexa74 = JIexa74 & Join(arr, ", ")
            JIexa74 = JIexa74 & .IfError(.Index(Range("G:G"), .Match(r.Cells(4), Range("F:F"), 0)), "")
        End With
End Function
[/vba]
К сообщению приложен файл: 4725560.xlsm(30.4 Kb)
 
Ответить
СообщениеПо файлу из сообщения 9
[vba]
Код
Function JIexa74(r As Range) As String
    If r.Count <> 4 Then Exit Function
        With Application
            JIexa74 = .IfError(.Index(Range("B:B"), .Match(r.Cells(1), Range("A:A"), 0)), "") & " ÍÀ "
            JIexa74 = JIexa74 & .IfError(.Index(Range("E:E"), .Match(r.Cells(2), Range("D:D"), 0)), "")
            arr = Split(r.Cells(3), ",")
                For i = 0 To UBound(arr)
                    arr(i) = .IfError(.Index(Range("E:E"), .Match(.Trim(arr(i)), Range("D:D"), 0)), "")
                Next
            JIexa74 = JIexa74 & Join(arr, ", ")
            JIexa74 = JIexa74 & .IfError(.Index(Range("G:G"), .Match(r.Cells(4), Range("F:F"), 0)), "")
        End With
End Function
[/vba]

Автор - sboy
Дата добавления - 28.02.2018 в 10:15
abtextime Дата: Среда, 28.02.2018, 12:17 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
Поправил (результат на листе "Результат работы макроса")
[vba]
Код

Public Sub Transfer()

    Dim R As Range
    RC = Range("J3").End(xlDown).Row
    Set R = Range(Cells(2, 12), Cells(RC, 12))
    For i = 3 To RC
        Cells(i, 12).Value = UCase(Replace(Replace(Cells(i, 1).Value, " ", "#"), ",", "$") & "#НА#" & Replace(Cells(i, 9).Value & " " & Cells(i, 10).Value, " ", "#") & " " & Replace(Cells(i, 11).Value, ",", "$")) & "$"
    Next i
    
    
    For i = 3 To Range("A3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 1).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 2).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("F3").End(xlDown).Row
        R.Replace What:=UCase(Cells(i, 6).Value) & "$", Replacement:=Cells(i, 7).Value & "$", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("D3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 4).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 5).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    
    For i = 3 To RC
        Cells(i, 12).Value = Replace(Replace(Left(Cells(i, 12).Value, Len(Cells(i, 12).Value) - 1), "#", " "), "$", ",")
    Next i

End Sub
[/vba]

Это не функция, как у коллеги sboy, а макрос (Procedure). Его надо не вставлять в ячейки. а запускать его с вкладки Разработчик (можно на комбинацию клавиш "повесить"


К сообщению приложен файл: -4-1-.xlsm(39.9 Kb)
 
Ответить
СообщениеПоправил (результат на листе "Результат работы макроса")
[vba]
Код

Public Sub Transfer()

    Dim R As Range
    RC = Range("J3").End(xlDown).Row
    Set R = Range(Cells(2, 12), Cells(RC, 12))
    For i = 3 To RC
        Cells(i, 12).Value = UCase(Replace(Replace(Cells(i, 1).Value, " ", "#"), ",", "$") & "#НА#" & Replace(Cells(i, 9).Value & " " & Cells(i, 10).Value, " ", "#") & " " & Replace(Cells(i, 11).Value, ",", "$")) & "$"
    Next i
    
    
    For i = 3 To Range("A3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 1).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 2).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("F3").End(xlDown).Row
        R.Replace What:=UCase(Cells(i, 6).Value) & "$", Replacement:=Cells(i, 7).Value & "$", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    For i = 3 To Range("D3").End(xlDown).Row
            R.Replace What:=Replace(Replace(UCase(Cells(i, 4).Value), " ", "#"), ",", "$"), Replacement:=Replace(Replace(Cells(i, 5).Value, " ", "#"), ",", "$"), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Next i
    
    
    For i = 3 To RC
        Cells(i, 12).Value = Replace(Replace(Left(Cells(i, 12).Value, Len(Cells(i, 12).Value) - 1), "#", " "), "$", ",")
    Next i

End Sub
[/vba]

Это не функция, как у коллеги sboy, а макрос (Procedure). Его надо не вставлять в ячейки. а запускать его с вкладки Разработчик (можно на комбинацию клавиш "повесить"



Автор - abtextime
Дата добавления - 28.02.2018 в 12:17
JIexa_74 Дата: Четверг, 01.03.2018, 12:03 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
abtextime, супер.

Еще один момент, в колонке "L3" не переименовывается "COROLLA WAGON", в "КОРОЛЛА ВАГОН" и в колонке "L4", не переименовывается "MARK II BLIT" в "МАРК 2 БЛИТ".

Скажите а по мере добавление справочника данный макрос будет автоматически считывать значения? Или вручную как то менять....потому что справочник будет наполняться постепенно.
В файлике ничего не менял. Можете взять предыдущий.

Спасибо.
 
Ответить
Сообщениеabtextime, супер.

Еще один момент, в колонке "L3" не переименовывается "COROLLA WAGON", в "КОРОЛЛА ВАГОН" и в колонке "L4", не переименовывается "MARK II BLIT" в "МАРК 2 БЛИТ".

Скажите а по мере добавление справочника данный макрос будет автоматически считывать значения? Или вручную как то менять....потому что справочник будет наполняться постепенно.
В файлике ничего не менял. Можете взять предыдущий.

Спасибо.

Автор - JIexa_74
Дата добавления - 01.03.2018 в 12:03
sboy Дата: Четверг, 01.03.2018, 12:08 | Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 1872
Репутация: 552 ±
Замечаний: 0% ±

Excel 2010
не переименовывается "COROLLA WAGON"

файлик из сообщения №13 видели?
 
Ответить
Сообщение
не переименовывается "COROLLA WAGON"

файлик из сообщения №13 видели?

Автор - sboy
Дата добавления - 01.03.2018 в 12:08
JIexa_74 Дата: Четверг, 01.03.2018, 12:19 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
sboy, не видел, извините, сейчас ознакомился.
1. в результате не хватает пробелов, обратите внимание.
2. имя товара, марка, модель норм "превращается". А вот по ДВС, если одно значение, например "1NZFE", то на выходе "1NZFE, 1NZ-FE, 1NZ (1.5)",
НО, если в ДВС будет, "1NZFE, 1GFE, 2UZFE", то в результате пусто.
"
 
Ответить
Сообщениеsboy, не видел, извините, сейчас ознакомился.
1. в результате не хватает пробелов, обратите внимание.
2. имя товара, марка, модель норм "превращается". А вот по ДВС, если одно значение, например "1NZFE", то на выходе "1NZFE, 1NZ-FE, 1NZ (1.5)",
НО, если в ДВС будет, "1NZFE, 1GFE, 2UZFE", то в результате пусто.
"

Автор - JIexa_74
Дата добавления - 01.03.2018 в 12:19
sboy Дата: Четверг, 01.03.2018, 12:32 | Сообщение № 18
Группа: Проверенные
Ранг: Старожил
Сообщений: 1872
Репутация: 552 ±
Замечаний: 0% ±

Excel 2010
Подправил
К сообщению приложен файл: 8638175.xlsm(30.8 Kb)
 
Ответить
СообщениеПодправил

Автор - sboy
Дата добавления - 01.03.2018 в 12:32
abtextime Дата: Четверг, 01.03.2018, 17:18 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
JIexa_74,

WAGON у Вас нет в столбце D. Если будет - "переведет"

MARK II BLIT - из-за того, что есть MARK II, он "сбивает". можно заменить пару "MARK II BLIT - МАРК 2 БЛИТ" на "BLIT - БЛИТ" и замена отработает (см. приложенный файл).
Вообще, макрос был бы проще, если бы в столбце были ТОЛЬКО СЛОВА, а не СЛОВА и СОЧЕТАНИЯ СЛОВ. Это же возможно и, в общем-то, разумно
К сообщению приложен файл: 5870097.xlsm(40.0 Kb)
 
Ответить
СообщениеJIexa_74,

WAGON у Вас нет в столбце D. Если будет - "переведет"

MARK II BLIT - из-за того, что есть MARK II, он "сбивает". можно заменить пару "MARK II BLIT - МАРК 2 БЛИТ" на "BLIT - БЛИТ" и замена отработает (см. приложенный файл).
Вообще, макрос был бы проще, если бы в столбце были ТОЛЬКО СЛОВА, а не СЛОВА и СОЧЕТАНИЯ СЛОВ. Это же возможно и, в общем-то, разумно

Автор - abtextime
Дата добавления - 01.03.2018 в 17:18
abtextime Дата: Четверг, 01.03.2018, 17:20 | Сообщение № 20
Группа: Проверенные
Ранг: Ветеран
Сообщений: 807
Репутация: 113 ±
Замечаний: 0% ±

Excel 2010
JIexa_74,

да, благодаря применению конструкций типа Range("*").End(xlDown).Row можно добавлять пары в столбцы D и E
 
Ответить
СообщениеJIexa_74,

да, благодаря применению конструкций типа Range("*").End(xlDown).Row можно добавлять пары в столбцы D и E

Автор - abtextime
Дата добавления - 01.03.2018 в 17:20
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Замена значений в тексте из справочника (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!