Здравствуйте, уважаемые форумчане. Задача такая: Нужно везде убрать TYPE цифра, а где где модель повторяется, убрать еще и саму повторную модель. То есть, если в столбце E в ячейке DW152 TYPE 1, DW152 TYPE 2, то в соседнем столбце должно остаться DW152 Если в столбце E в ячейке DCF680 TYPE 1, DCF682 TYPE 1, то в соседнем столбце должно остаться DCF680, DCF682 То есть, если в столбце E в ячейке DW233K TYPE 2, DW233K TYPE 3, DW513 TYPE 1, DW515K TYPE 2, DW515K TYPE 3, DW515K TYPE 4, то в соседнем столбце должно остаться DW233K, DW513, DW515K.
Здравствуйте, уважаемые форумчане. Задача такая: Нужно везде убрать TYPE цифра, а где где модель повторяется, убрать еще и саму повторную модель. То есть, если в столбце E в ячейке DW152 TYPE 1, DW152 TYPE 2, то в соседнем столбце должно остаться DW152 Если в столбце E в ячейке DCF680 TYPE 1, DCF682 TYPE 1, то в соседнем столбце должно остаться DCF680, DCF682 То есть, если в столбце E в ячейке DW233K TYPE 2, DW233K TYPE 3, DW513 TYPE 1, DW515K TYPE 2, DW515K TYPE 3, DW515K TYPE 4, то в соседнем столбце должно остаться DW233K, DW513, DW515K.Marandi
Сообщение отредактировал Marandi - Понедельник, 28.01.2019, 15:41
В Готовых решениях есть UDF для удаления дубликатов в строке. Если добавить удаление TYPE, то вполне можно использовать [vba]
Код
Function NoDupesAtString(rng As Range, _ Optional sep As String = " ", _ Optional buReg As Long = 0) As String ' формула на листе имеет вид: =NoDupesAtString(A4;", ";1) ' A4 - ячейка, в которой нужно удалить повторы ' ", " - разделитель (по умолчанию пробел) ' 1 - без учета регистра (0 - с учетом регистра, по умолчанию) Dim v, s As String: s = sep If buReg = 0 Then For Each v In Split(rng.Value, sep) If Len(v) Then v = Trim$(Left(v, InStr(v, "TYPE") - 1)) If InStr(s, sep & v & sep) = 0 Then s = s & v & sep End If Next Else For Each v In Split(rng.Value, sep) If Len(v) Then v = Trim$(Left(v, InStr(v, "TYPE") - 1)) If InStr(UCase(s), sep & UCase(v) & sep) = 0 Then s = s & v & sep End If Next End If NoDupesAtString = Mid(s, Len(sep) + 1, Len(s) - Len(sep) * 2) End Function
[/vba]
В Готовых решениях есть UDF для удаления дубликатов в строке. Если добавить удаление TYPE, то вполне можно использовать [vba]
Код
Function NoDupesAtString(rng As Range, _ Optional sep As String = " ", _ Optional buReg As Long = 0) As String ' формула на листе имеет вид: =NoDupesAtString(A4;", ";1) ' A4 - ячейка, в которой нужно удалить повторы ' ", " - разделитель (по умолчанию пробел) ' 1 - без учета регистра (0 - с учетом регистра, по умолчанию) Dim v, s As String: s = sep If buReg = 0 Then For Each v In Split(rng.Value, sep) If Len(v) Then v = Trim$(Left(v, InStr(v, "TYPE") - 1)) If InStr(s, sep & v & sep) = 0 Then s = s & v & sep End If Next Else For Each v In Split(rng.Value, sep) If Len(v) Then v = Trim$(Left(v, InStr(v, "TYPE") - 1)) If InStr(UCase(s), sep & UCase(v) & sep) = 0 Then s = s & v & sep End If Next End If NoDupesAtString = Mid(s, Len(sep) + 1, Len(s) - Len(sep) * 2) End Function
Pelena, я добавила функцию, изменив на E4 вместо A4, т.к. нужно работать со столбцом E. Я правильно сделала? Потом вставила в соседнюю ячейку = и название функции, а она открывает скобку, и я не знаю, в какую ячейку нужно щелкнуть и зачем открывается скобка. Если щелкнуть на E4, выдает ошибку значения.
Pelena, я добавила функцию, изменив на E4 вместо A4, т.к. нужно работать со столбцом E. Я правильно сделала? Потом вставила в соседнюю ячейку = и название функции, а она открывает скобку, и я не знаю, в какую ячейку нужно щелкнуть и зачем открывается скобка. Если щелкнуть на E4, выдает ошибку значения.Marandi