Уважаемые господа, дайте, пожалуйста, совет. Есть кусок макроса создающий массив для дальнейшей фильтрации: N = Array("text1", "text2", "text3") Как правильно записать переменную со значением "text" без дальнейшего числа? Т.е нужно что то вроде "text*", но такой вариант падает с ошибкой. Заранее благодарен!
Добрый день!
Уважаемые господа, дайте, пожалуйста, совет. Есть кусок макроса создающий массив для дальнейшей фильтрации: N = Array("text1", "text2", "text3") Как правильно записать переменную со значением "text" без дальнейшего числа? Т.е нужно что то вроде "text*", но такой вариант падает с ошибкой. Заранее благодарен!ArkaIIIa
Условно, мне нужно, чтобы в Array создавался массив из значений, содержащих "text", но мне бы не хотелось перечислять самому все варианты, по этому я думал, что есть способ задать вариант в стиле "text*" или "text"&"*".
Условно, мне нужно, чтобы в Array создавался массив из значений, содержащих "text", но мне бы не хотелось перечислять самому все варианты, по этому я думал, что есть способ задать вариант в стиле "text*" или "text"&"*".ArkaIIIa
Собственно, вот часть кода, которую мне бы хотелось модифицировать: [vba]
Код
c11_ = Cells(1, Columns.Count).End(xlToLeft).Column r0_ = 2 r1_ = Range("O" & Rows.Count).End(xlUp).Row n_ = r1_ - r0_ + 1 Set Slovar = CreateObject("Scripting.Dictionary") ar3 = Array("Автокредит", _ "Государственный") For j = 1 To UBound(ar3) xxx_ = Slovar.Item(ar3(j)) Next j arf = Range("O" & r0_).Resize(n_, 1) 'массив для поиска arx = Cells(r0_, c11_ + 1).Resize(n_, 1) 'пустой массив On Error Resume Next For k = 1 To n_ Slovar.Add arf(k, 1), "" If Err Then Err.Clear arx(k, 1) = 1 Else Slovar.Remove arf(k, 1) ' arx(k, 1) = 1 End If Next k On Error GoTo 0 Cells(r0_, c11_ + 1).Resize(n_, 1) = arx On Error Resume Next Cells(r0_, c11_ + 1).Resize(n_, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 Cells(r0_, c11_ + 1).EntireColumn.Delete
[/vba]
Суть его (мое дилетантское представление) - поиск забитых в Array значений, и построчное удаление не входящих в перечень, указанный в Array. Проблема в том, что значение "автокредит" может быть выгружено в виде "авто кредит", "автокредит", "автокред" и т.п. Мне бы не хотелось перечислять все возможные варианты, по этому я искал способ (в силу того, что VBA для меня - темный лес), записать в Array значение "*авто*" т.е. любой текст, в котором есть "авто". а спереди или сзади - что угодно.
Собственно, вот часть кода, которую мне бы хотелось модифицировать: [vba]
Код
c11_ = Cells(1, Columns.Count).End(xlToLeft).Column r0_ = 2 r1_ = Range("O" & Rows.Count).End(xlUp).Row n_ = r1_ - r0_ + 1 Set Slovar = CreateObject("Scripting.Dictionary") ar3 = Array("Автокредит", _ "Государственный") For j = 1 To UBound(ar3) xxx_ = Slovar.Item(ar3(j)) Next j arf = Range("O" & r0_).Resize(n_, 1) 'массив для поиска arx = Cells(r0_, c11_ + 1).Resize(n_, 1) 'пустой массив On Error Resume Next For k = 1 To n_ Slovar.Add arf(k, 1), "" If Err Then Err.Clear arx(k, 1) = 1 Else Slovar.Remove arf(k, 1) ' arx(k, 1) = 1 End If Next k On Error GoTo 0 Cells(r0_, c11_ + 1).Resize(n_, 1) = arx On Error Resume Next Cells(r0_, c11_ + 1).Resize(n_, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 Cells(r0_, c11_ + 1).EntireColumn.Delete
[/vba]
Суть его (мое дилетантское представление) - поиск забитых в Array значений, и построчное удаление не входящих в перечень, указанный в Array. Проблема в том, что значение "автокредит" может быть выгружено в виде "авто кредит", "автокредит", "автокред" и т.п. Мне бы не хотелось перечислять все возможные варианты, по этому я искал способ (в силу того, что VBA для меня - темный лес), записать в Array значение "*авто*" т.е. любой текст, в котором есть "авто". а спереди или сзади - что угодно.ArkaIIIa
Сообщение отредактировал ArkaIIIa - Вторник, 31.10.2017, 14:30