Имеем: цвета, каждому из которых соответствует свой номер. Например, 1 - белый, 2 - черный, 3 - кремовый, 6 - молоко, 7 - бежевый, 11 - св.серый, 13 - т.серый и т.д. Что надо: я ввожу в ячейку нужные числа, например, 1, 3, 11. Получаю: белый, кремовый, св.серый
Файл с номерами - цветами и желаемым результатом прикладываю.
Добрый день! Помогите, пожалуйста, с формулой.
Имеем: цвета, каждому из которых соответствует свой номер. Например, 1 - белый, 2 - черный, 3 - кремовый, 6 - молоко, 7 - бежевый, 11 - св.серый, 13 - т.серый и т.д. Что надо: я ввожу в ячейку нужные числа, например, 1, 3, 11. Получаю: белый, кремовый, св.серый
Файл с номерами - цветами и желаемым результатом прикладываю.0льга
Public Function ColorNumber$(Spisok$, Numb$) Dim a, i&, ar, Col$ ar = Split(Replace(Spisok, " ", ""), ",") With WorksheetFunction a = Split(Replace(Numb, " ", ""), ",") For i = 0 To UBound(a) Col = Split(.HLookup(a(i) & "*", ar, 1, 0), "-")(1) ColorNumber = ColorNumber & Col & ", " Next End With ColorNumber = Left(ColorNumber, Len(ColorNumber) - 2) End Function
[/vba]
UDF: [vba]
Код
Public Function ColorNumber$(Spisok$, Numb$) Dim a, i&, ar, Col$ ar = Split(Replace(Spisok, " ", ""), ",") With WorksheetFunction a = Split(Replace(Numb, " ", ""), ",") For i = 0 To UBound(a) Col = Split(.HLookup(a(i) & "*", ar, 1, 0), "-")(1) ColorNumber = ColorNumber & Col & ", " Next End With ColorNumber = Left(ColorNumber, Len(ColorNumber) - 2) End Function
0льга, добрый вечер,еще вариант функции в ячейке C3,аргумент t1 в ячейке A1,аргумент t2 в ячейке B1 в файл-примере
[vba]
Код
Function zzz$(t1$, t2$) Dim i&, s$, reg As Object With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "\d+" For i = 0 To .Execute(t2).Count - 1 Set reg = CreateObject("VBScript.RegExp") reg.Pattern = "(" & .Execute(t2)(i) & "\s\-\s)([а-яё]{1,3}\.[а-яё]+|[а-яё]+)" s = s & reg.Execute(t1)(0).Submatches(1) & "," Next zzz = Left(s, Len(s) - 1) End With End Function
[/vba]
0льга, добрый вечер,еще вариант функции в ячейке C3,аргумент t1 в ячейке A1,аргумент t2 в ячейке B1 в файл-примере
[vba]
Код
Function zzz$(t1$, t2$) Dim i&, s$, reg As Object With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "\d+" For i = 0 To .Execute(t2).Count - 1 Set reg = CreateObject("VBScript.RegExp") reg.Pattern = "(" & .Execute(t2)(i) & "\s\-\s)([а-яё]{1,3}\.[а-яё]+|[а-яё]+)" s = s & reg.Execute(t1)(0).Submatches(1) & "," Next zzz = Left(s, Len(s) - 1) End With End Function
Function zzz1$(t1$, t2$) Dim i&, s$, reg As Object With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "\d+" For i = 0 To .Execute(t2).Count - 1 Set reg = CreateObject("VBScript.RegExp") reg.Pattern = .Execute(t2)(i) & "\s\-\s([а-яё]+?\.?[а-яё]+)" s = s & reg.Execute(t1)(0).Submatches(0) & "," Next zzz1 = Left(s, Len(s) - 1) End With End Function
[/vba]
0льга, добавлю,что можно также такой вариант
[vba]
Код
Function zzz1$(t1$, t2$) Dim i&, s$, reg As Object With CreateObject("VBScript.RegExp"): .Global = True: .Pattern = "\d+" For i = 0 To .Execute(t2).Count - 1 Set reg = CreateObject("VBScript.RegExp") reg.Pattern = .Execute(t2)(i) & "\s\-\s([а-яё]+?\.?[а-яё]+)" s = s & reg.Execute(t1)(0).Submatches(0) & "," Next zzz1 = Left(s, Len(s) - 1) End With End Function