можно будут узнать ответ на "_Boroda_, кстати ради эксперимента, заменил МНМН на 1212 формула работает не корректно... но если МНМН на 121Н все отлично..."
почему так происходит? или формула с цифрами не работает?
_Boroda_,
можно будут узнать ответ на "_Boroda_, кстати ради эксперимента, заменил МНМН на 1212 формула работает не корректно... но если МНМН на 121Н все отлично..."
почему так происходит? или формула с цифрами не работает?122334boss
Просто для информации, может кому-то пригодится. Немного сегодня по экспериментировал с данными и вот, что получилось. В таблице если нужно заменить например "КК" и "К" работает только одна формула. В примере подробности.
Всем хорошего вечера!
_Boroda_, добрый день!
Просто для информации, может кому-то пригодится. Немного сегодня по экспериментировал с данными и вот, что получилось. В таблице если нужно заменить например "КК" и "К" работает только одна формула. В примере подробности.
С учетом сделанного AlexM замечания, хочу предложить более простой способ, который, помимо прочего, позволит динамически изменять список замен. Вот такая вот функция: [vba]
Код
Function НовыйАртикул(ByVal Артикул As String, Вариант As Range) As Variant Dim I As Long Dim S As String With Вариант If .Columns.Count <> 2 Then НовыйАртикул = CVErr(xlErrRef) Exit Function End If For I = 1 To .Rows.Count S = .Cells(I, 1) If (Артикул Like "*" & S) Then НовыйАртикул = Left(Артикул, Len(Артикул) - Len(S)) & .Cells(I, 2) Exit For Else: НовыйАртикул = CVErr(xlErrValue) End If Next I End With End Function
[/vba] Получает 2 аргумента: строку, в которой надо произвести замену и ссылку на диапазон из 2-х столбцов, где в первом варианты окончаний, а во втором - соответствующие ему замены. Если количество столбцов в диапазоне <>2, возвращает #ССЫЛКА!, если вариант отсутствует - #ЗНАЧ!
С учетом сделанного AlexM замечания, хочу предложить более простой способ, который, помимо прочего, позволит динамически изменять список замен. Вот такая вот функция: [vba]
Код
Function НовыйАртикул(ByVal Артикул As String, Вариант As Range) As Variant Dim I As Long Dim S As String With Вариант If .Columns.Count <> 2 Then НовыйАртикул = CVErr(xlErrRef) Exit Function End If For I = 1 To .Rows.Count S = .Cells(I, 1) If (Артикул Like "*" & S) Then НовыйАртикул = Left(Артикул, Len(Артикул) - Len(S)) & .Cells(I, 2) Exit For Else: НовыйАртикул = CVErr(xlErrValue) End If Next I End With End Function
[/vba] Получает 2 аргумента: строку, в которой надо произвести замену и ссылку на диапазон из 2-х столбцов, где в первом варианты окончаний, а во втором - соответствующие ему замены. Если количество столбцов в диапазоне <>2, возвращает #ССЫЛКА!, если вариант отсутствует - #ЗНАЧ!МВТ