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

Вход

Регистрация

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

 

= Мир MS Excel/Задать в функции Array не точное знание переменной - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задать в функции Array не точное знание переменной
Задать в функции Array не точное знание переменной
ArkaIIIa Дата: Вторник, 31.10.2017, 12:48 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 879
Репутация: 115 ±
Замечаний: 0% ±

2010
Добрый день!

Уважаемые господа, дайте, пожалуйста, совет.
Есть кусок макроса создающий массив для дальнейшей фильтрации:
N = Array("text1", "text2", "text3")
Как правильно записать переменную со значением "text" без дальнейшего числа? Т.е нужно что то вроде "text*", но такой вариант падает с ошибкой.
Заранее благодарен!
 
Ответить
СообщениеДобрый день!

Уважаемые господа, дайте, пожалуйста, совет.
Есть кусок макроса создающий массив для дальнейшей фильтрации:
N = Array("text1", "text2", "text3")
Как правильно записать переменную со значением "text" без дальнейшего числа? Т.е нужно что то вроде "text*", но такой вариант падает с ошибкой.
Заранее благодарен!

Автор - ArkaIIIa
Дата добавления - 31.10.2017 в 12:48
_Boroda_ Дата: Вторник, 31.10.2017, 12:51 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11647
Репутация: 4828 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы про это?
[vba]
Код
ActiveSheet.Range("$A$2:$E$12").AutoFilter Field:=3, Criteria1:="=text*"
[/vba]
Если фильтруем по звездочке, то это уже не массив, а условие


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВы про это?
[vba]
Код
ActiveSheet.Range("$A$2:$E$12").AutoFilter Field:=3, Criteria1:="=text*"
[/vba]
Если фильтруем по звездочке, то это уже не массив, а условие

Автор - _Boroda_
Дата добавления - 31.10.2017 в 12:51
ArkaIIIa Дата: Вторник, 31.10.2017, 12:53 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 879
Репутация: 115 ±
Замечаний: 0% ±

2010
Александр, добрый день! Не совсем. В рамках Array можно указать не точный текст, а "*текст*"?
 
Ответить
СообщениеАлександр, добрый день! Не совсем. В рамках Array можно указать не точный текст, а "*текст*"?

Автор - ArkaIIIa
Дата добавления - 31.10.2017 в 12:53
Roman777 Дата: Вторник, 31.10.2017, 12:57 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 798
Репутация: 89 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ArkaIIIa, к моменту исполнения строчки
[vba]
Код
N = Array("text1", "text2", "text3")
[/vba]
Вы должны уже знать сами значения каждого аргумета.
Мб Вы хотите что-то типа:
[vba]
Код
arg1="text1"
arg2="text2"
arg3="text3"
....
N = Array(arg1, arg2, arg3)
[/vba]
?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Вторник, 31.10.2017, 12:58
 
Ответить
СообщениеArkaIIIa, к моменту исполнения строчки
[vba]
Код
N = Array("text1", "text2", "text3")
[/vba]
Вы должны уже знать сами значения каждого аргумета.
Мб Вы хотите что-то типа:
[vba]
Код
arg1="text1"
arg2="text2"
arg3="text3"
....
N = Array(arg1, arg2, arg3)
[/vba]
?

Автор - Roman777
Дата добавления - 31.10.2017 в 12:57
ArkaIIIa Дата: Вторник, 31.10.2017, 13:00 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 879
Репутация: 115 ±
Замечаний: 0% ±

2010
Условно, мне нужно, чтобы в Array создавался массив из значений, содержащих "text", но мне бы не хотелось перечислять самому все варианты, по этому я думал, что есть способ задать вариант в стиле "text*" или "text"&"*".
 
Ответить
СообщениеУсловно, мне нужно, чтобы в Array создавался массив из значений, содержащих "text", но мне бы не хотелось перечислять самому все варианты, по этому я думал, что есть способ задать вариант в стиле "text*" или "text"&"*".

Автор - ArkaIIIa
Дата добавления - 31.10.2017 в 13:00
_Boroda_ Дата: Вторник, 31.10.2017, 13:09 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11647
Репутация: 4828 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот так работать будет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("*кк*"), Operator:=xlFilterValues
[/vba]
Вот так тоже будет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("*11*", "*6*"), Operator:=xlFilterValues
[/vba]
А вот так уже нет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("sss", "eee", "*кк*"), Operator:=xlFilterValues
[/vba]
ArkaIIIa, и давайте уже как-то поконкретнее - с файлом, с объяснением причины своего вопроса, с полным кодом, ...


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот так работать будет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("*кк*"), Operator:=xlFilterValues
[/vba]
Вот так тоже будет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("*11*", "*6*"), Operator:=xlFilterValues
[/vba]
А вот так уже нет
[vba]
Код
.AutoFilter Field:=3, Criteria1:=Array("sss", "eee", "*кк*"), Operator:=xlFilterValues
[/vba]
ArkaIIIa, и давайте уже как-то поконкретнее - с файлом, с объяснением причины своего вопроса, с полным кодом, ...

Автор - _Boroda_
Дата добавления - 31.10.2017 в 13:09
ArkaIIIa Дата: Вторник, 31.10.2017, 13:24 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 879
Репутация: 115 ±
Замечаний: 0% ±

2010
Ок, извиняюсь. До работы доеду - напишу, как положено, с файлом. Через телефон очень неудобно.
 
Ответить
СообщениеОк, извиняюсь. До работы доеду - напишу, как положено, с файлом. Через телефон очень неудобно.

Автор - ArkaIIIa
Дата добавления - 31.10.2017 в 13:24
ArkaIIIa Дата: Вторник, 31.10.2017, 14:26 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 879
Репутация: 115 ±
Замечаний: 0% ±

2010
Собственно, вот часть кода, которую мне бы хотелось модифицировать:
[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 - Вторник, 31.10.2017, 14:30
 
Ответить
СообщениеСобственно, вот часть кода, которую мне бы хотелось модифицировать:
[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
Дата добавления - 31.10.2017 в 14:26
_Boroda_ Дата: Вторник, 31.10.2017, 15:02 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11647
Репутация: 4828 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Несмотря на то, что этот код явно писал я, без файла и полного кода помочь сложно


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНесмотря на то, что этот код явно писал я, без файла и полного кода помочь сложно

Автор - _Boroda_
Дата добавления - 31.10.2017 в 15:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Задать в функции Array не точное знание переменной
Страница 1 из 11
Поиск:

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