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

Вход

Регистрация

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

 

= Мир MS Excel/однотипная операция с фильтром - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » однотипная операция с фильтром (Макросы/Sub)
однотипная операция с фильтром
статист Дата: Вторник, 27.12.2016, 11:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
с помощью прожекта составил макрос
[vba]
Код
Sub Ìàêðîñ5()

ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Copy
Sheets("Õîçÿåâà").Select
ActiveSheet.Range("$A$2:$I$114").AutoFilter Field:=2, Criteria1:= _
"MBC Mykolaiv"
Sheets("Õîçÿåâà (2)").Select
ActiveCell.Offset(0, 1).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ãîñòè").Select
ActiveSheet.Range("$A$2:$I$102").AutoFilter Field:=3, Criteria1:= _
"MBC Mykolaiv"
Sheets("Ðàñ÷¸ò").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("ÈÒÎÃ").Select
ActiveCell.Offset(-9, 0).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Õîçÿåâà (2)").Select
ActiveCell.Offset(1, -1).Range("A1").Select
End Sub
[/vba]
с помощью его фильтруются данные на двух листах
подскажите как задать переменную чтобы работало не только для одной пары данных "MBC Mykolaiv" и "MBC Mykolaiv" пробовал регулярными выражениями - не получается
нужно что бы из буфера обмена текст загружался а как сделать не соображу


Сообщение отредактировал статист - Вторник, 27.12.2016, 12:04
 
Ответить
Сообщениес помощью прожекта составил макрос
[vba]
Код
Sub Ìàêðîñ5()

ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Copy
Sheets("Õîçÿåâà").Select
ActiveSheet.Range("$A$2:$I$114").AutoFilter Field:=2, Criteria1:= _
"MBC Mykolaiv"
Sheets("Õîçÿåâà (2)").Select
ActiveCell.Offset(0, 1).Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Ãîñòè").Select
ActiveSheet.Range("$A$2:$I$102").AutoFilter Field:=3, Criteria1:= _
"MBC Mykolaiv"
Sheets("Ðàñ÷¸ò").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("ÈÒÎÃ").Select
ActiveCell.Offset(-9, 0).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Õîçÿåâà (2)").Select
ActiveCell.Offset(1, -1).Range("A1").Select
End Sub
[/vba]
с помощью его фильтруются данные на двух листах
подскажите как задать переменную чтобы работало не только для одной пары данных "MBC Mykolaiv" и "MBC Mykolaiv" пробовал регулярными выражениями - не получается
нужно что бы из буфера обмена текст загружался а как сделать не соображу

Автор - статист
Дата добавления - 27.12.2016 в 11:43
Pelena Дата: Вторник, 27.12.2016, 11:44 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
статист, оформите код тегами (кнопка #)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениестатист, оформите код тегами (кнопка #)

Автор - Pelena
Дата добавления - 27.12.2016 в 11:44
статист Дата: Вторник, 27.12.2016, 12:05 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
[vba]
Код
Sub Ìàêðîñ1()
    Selection.Copy
    Sheets("Õîçÿåâà").Select
    ActiveSheet.Range("$A$2:$I$114").AutoFilter Field:=2, Criteria1:= _
        "MBC Mykolaiv"
    Sheets("Õîçÿåâà (2)").Select
    ActiveCell.Offset(0, 1).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ãîñòè").Select
    ActiveCell.Offset(-94, 2).Range("A1").Select
    ActiveSheet.Range("$A$2:$I$102").AutoFilter Field:=3, Criteria1:= _
        "BC Budivelnik"
    Sheets("Ðàñ÷¸ò").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("ÈÒÎÃ").Select
    ActiveCell.Offset(-4, 0).Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Õîçÿåâà (2)").Select
    ActiveCell.Offset(1, -1).Range("A1").Select
End Sub
[/vba]
переделал


Сообщение отредактировал статист - Вторник, 27.12.2016, 12:07
 
Ответить
Сообщение[vba]
Код
Sub Ìàêðîñ1()
    Selection.Copy
    Sheets("Õîçÿåâà").Select
    ActiveSheet.Range("$A$2:$I$114").AutoFilter Field:=2, Criteria1:= _
        "MBC Mykolaiv"
    Sheets("Õîçÿåâà (2)").Select
    ActiveCell.Offset(0, 1).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Ãîñòè").Select
    ActiveCell.Offset(-94, 2).Range("A1").Select
    ActiveSheet.Range("$A$2:$I$102").AutoFilter Field:=3, Criteria1:= _
        "BC Budivelnik"
    Sheets("Ðàñ÷¸ò").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("ÈÒÎÃ").Select
    ActiveCell.Offset(-4, 0).Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Õîçÿåâà (2)").Select
    ActiveCell.Offset(1, -1).Range("A1").Select
End Sub
[/vba]
переделал

Автор - статист
Дата добавления - 27.12.2016 в 12:05
K-SerJC Дата: Вторник, 27.12.2016, 12:42 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
[vba]
Код
Sub buffText()
Dim str As String
Dim myData As New DataObject
myData.GetFromClipboard
If myData.GetFormat(1) = True Then
makros1 (myData)
Else
MsgBox "text on clipboard not found", vbCritical, "error"
Exit Sub
End If
End Sub
[/vba]
macros1 - это ваш макрос
в нем надо дополнить строку
sub макрос(tbd as string)
и все значения в коде "MBC Mykolaiv" заменить на tbd

копируете текст в буфер, запускаете макрос bufftext он из буфера берет значение в переменную и если это текст вызывает ваш макрос, присваивая его переменной tbd значение из буфера


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение[vba]
Код
Sub buffText()
Dim str As String
Dim myData As New DataObject
myData.GetFromClipboard
If myData.GetFormat(1) = True Then
makros1 (myData)
Else
MsgBox "text on clipboard not found", vbCritical, "error"
Exit Sub
End If
End Sub
[/vba]
macros1 - это ваш макрос
в нем надо дополнить строку
sub макрос(tbd as string)
и все значения в коде "MBC Mykolaiv" заменить на tbd

копируете текст в буфер, запускаете макрос bufftext он из буфера берет значение в переменную и если это текст вызывает ваш макрос, присваивая его переменной tbd значение из буфера

Автор - K-SerJC
Дата добавления - 27.12.2016 в 12:42
статист Дата: Вторник, 27.12.2016, 12:56 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
а если значений два для двух фильтров ?
[vba]
Код
AutoFilter Field:=2, Criteria1:= _
"MBC Mykolaiv"
AutoFilter Field:=3, Criteria1:= _
"BC Budivelnik"
[/vba]
[moder]Нарушение п.3 Правил форума в части тегов. Игнорирование замечаний модератора[/moder]


Сообщение отредактировал статист - Вторник, 27.12.2016, 16:17
 
Ответить
Сообщениеа если значений два для двух фильтров ?
[vba]
Код
AutoFilter Field:=2, Criteria1:= _
"MBC Mykolaiv"
AutoFilter Field:=3, Criteria1:= _
"BC Budivelnik"
[/vba]
[moder]Нарушение п.3 Правил форума в части тегов. Игнорирование замечаний модератора[/moder]

Автор - статист
Дата добавления - 27.12.2016 в 12:56
Alex_ST Дата: Вторник, 27.12.2016, 13:22 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
статист, почитайте пост Борбьа с кракозябрами или хотя бы просто перед копированием переключайте раскладку клавиатуры в RUS - будет нормально копипаститься без "зюковок"



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениестатист, почитайте пост Борбьа с кракозябрами или хотя бы просто перед копированием переключайте раскладку клавиатуры в RUS - будет нормально копипаститься без "зюковок"

Автор - Alex_ST
Дата добавления - 27.12.2016 в 13:22
K-SerJC Дата: Вторник, 27.12.2016, 15:01 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Цитата статист, 27.12.2016 в 12:56, в сообщении № 5 ()
а если значений два для двух фильтров ?

ну так обозначьте две переменные для процедуры
[vba]
Код
sub макрос(tbd1 as string, tbd2 as string)
[/vba]
только из буфера обмена вы сразу два параметра как планируете вытащить?
если только эти параметры брать с листа(определенных ячеек) или формы


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Вторник, 27.12.2016, 15:02
 
Ответить
Сообщение
Цитата статист, 27.12.2016 в 12:56, в сообщении № 5 ()
а если значений два для двух фильтров ?

ну так обозначьте две переменные для процедуры
[vba]
Код
sub макрос(tbd1 as string, tbd2 as string)
[/vba]
только из буфера обмена вы сразу два параметра как планируете вытащить?
если только эти параметры брать с листа(определенных ячеек) или формы

Автор - K-SerJC
Дата добавления - 27.12.2016 в 15:01
статист Дата: Вторник, 27.12.2016, 15:44 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
примеры берутся по очереди - то есть скопировал значение с одной ячейки вставил в окошко фильтра (поиск) затем скопировал значение второй ячейки и вставил в поиск другого фильтра
было бы идеально задать команду или объект (я не знаю ) которая вставляла бы значение в окошко поиска фильтра значение из буфера


Сообщение отредактировал статист - Вторник, 27.12.2016, 15:45
 
Ответить
Сообщениепримеры берутся по очереди - то есть скопировал значение с одной ячейки вставил в окошко фильтра (поиск) затем скопировал значение второй ячейки и вставил в поиск другого фильтра
было бы идеально задать команду или объект (я не знаю ) которая вставляла бы значение в окошко поиска фильтра значение из буфера

Автор - статист
Дата добавления - 27.12.2016 в 15:44
статист Дата: Вторник, 27.12.2016, 18:27 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
не ужели в ВБА нет простой команды вставляющей текст из буфера обмена
как я понял мне нужно изменить эту строку
[vba]
Код
Criteria1:= _
        "BC Budivelnik"
[/vba]
может есть команда выполняющая нажатие клавиш Ctrl+V ?
 
Ответить
Сообщениене ужели в ВБА нет простой команды вставляющей текст из буфера обмена
как я понял мне нужно изменить эту строку
[vba]
Код
Criteria1:= _
        "BC Budivelnik"
[/vba]
может есть команда выполняющая нажатие клавиш Ctrl+V ?

Автор - статист
Дата добавления - 27.12.2016 в 18:27
Alex_ST Дата: Вторник, 27.12.2016, 21:24 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Вообще-то буфер обмена - это объект форточек, поэтому прямого обращения к нему из VBA нет.
Но обращаться к нему совсем не сложно. Не одной командой, конечно, но всё-таки… Вот пачка примерчиков:

Цитата статист, 27.12.2016 в 18:27, в сообщении № 9 ()
может есть команда выполняющая нажатие клавиш Ctrl+V ?
Да нет проблем:[vba]
Код
Application.SendKeys "^{V}"
[/vba]Каков вопрос, таков и ответ. А про то, как сказать приложению, в какое из полей диалогового окна автофильтра нужно это вставлять, Вы не спрашивали :)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеВообще-то буфер обмена - это объект форточек, поэтому прямого обращения к нему из VBA нет.
Но обращаться к нему совсем не сложно. Не одной командой, конечно, но всё-таки… Вот пачка примерчиков:

Цитата статист, 27.12.2016 в 18:27, в сообщении № 9 ()
может есть команда выполняющая нажатие клавиш Ctrl+V ?
Да нет проблем:[vba]
Код
Application.SendKeys "^{V}"
[/vba]Каков вопрос, таков и ответ. А про то, как сказать приложению, в какое из полей диалогового окна автофильтра нужно это вставлять, Вы не спрашивали :)

Автор - Alex_ST
Дата добавления - 27.12.2016 в 21:24
статист Дата: Вторник, 27.12.2016, 23:05 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
поупражнялся немного
менял фразу [vba]
Код
Criteria1:= _
        "BC Budivelnik"
[/vba]
на [vba]
Код
Criteria1:= _
        Application.SendKeys "^{V}"
[/vba]
итог
Цитата
cant execute code in break mode

ставил [vba]
Код
test_GetFromClipBoard()   
    Debug.Print GetFromClipBoard
[/vba]
в разных частях макроса - не работает :(
 
Ответить
Сообщениепоупражнялся немного
менял фразу [vba]
Код
Criteria1:= _
        "BC Budivelnik"
[/vba]
на [vba]
Код
Criteria1:= _
        Application.SendKeys "^{V}"
[/vba]
итог
Цитата
cant execute code in break mode

ставил [vba]
Код
test_GetFromClipBoard()   
    Debug.Print GetFromClipBoard
[/vba]
в разных частях макроса - не работает :(

Автор - статист
Дата добавления - 27.12.2016 в 23:05
K-SerJC Дата: Среда, 28.12.2016, 07:53 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
статист, вы не правильно применяете операнды. и полученные рекомендации
VBA это хороший инструмент в котором можно решить любую задачу, главное найти как и правильно сложить нужные блоки

там нет волшебной кнопки под любую задачу

можно в вашем коде поставить вместо "MBC Mykolaiv" - [vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
[/vba]

[offtop]
Вы не спрашивали :)

Алекс тут без конкретно оформленного решения врятли получиться


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениестатист, вы не правильно применяете операнды. и полученные рекомендации
VBA это хороший инструмент в котором можно решить любую задачу, главное найти как и правильно сложить нужные блоки

там нет волшебной кнопки под любую задачу

можно в вашем коде поставить вместо "MBC Mykolaiv" - [vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
[/vba]

[offtop]
Вы не спрашивали :)

Алекс тут без конкретно оформленного решения врятли получиться

Автор - K-SerJC
Дата добавления - 28.12.2016 в 07:53
статист Дата: Среда, 28.12.2016, 09:29 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата
можно в вашем коде поставить вместо "MBC Mykolaiv" -
[vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
[/vba]

не плохо
но нужно постоянно жать Ctrl+V-Enter
 
Ответить
Сообщение
Цитата
можно в вашем коде поставить вместо "MBC Mykolaiv" -
[vba]
Код
inputbox ("Введите текст первого фильтра", vbokonly)
[/vba]

не плохо
но нужно постоянно жать Ctrl+V-Enter

Автор - статист
Дата добавления - 28.12.2016 в 09:29
K-SerJC Дата: Среда, 28.12.2016, 10:36 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Цитата статист, 28.12.2016 в 09:29, в сообщении № 13 ()
не плохо
но нужно постоянно жать Ctrl+V-Enter

в начале процедуры
[vba]
Код
dim filt1, filt2
filt1 = inputbox ("Введите текст первого фильтра", vbokonly)
filt2 = inputbox ("Введите текст второго фильтра", vbokonly)
[/vba]
далее в блоке меняете текст "MBC Mykolaiv" , где надо filt1, или filt2
при запуске процедуры введете первый фильтр, затем второй


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Среда, 28.12.2016, 10:39
 
Ответить
Сообщение
Цитата статист, 28.12.2016 в 09:29, в сообщении № 13 ()
не плохо
но нужно постоянно жать Ctrl+V-Enter

в начале процедуры
[vba]
Код
dim filt1, filt2
filt1 = inputbox ("Введите текст первого фильтра", vbokonly)
filt2 = inputbox ("Введите текст второго фильтра", vbokonly)
[/vba]
далее в блоке меняете текст "MBC Mykolaiv" , где надо filt1, или filt2
при запуске процедуры введете первый фильтр, затем второй

Автор - K-SerJC
Дата добавления - 28.12.2016 в 10:36
Alex_ST Дата: Среда, 28.12.2016, 13:28 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Цитата статист, 27.12.2016 в 23:05, в сообщении № 11 ()
поупражнялся немного
Судя по Вашим "упражнениям", Вы, владея только макрорекордером :) , не понимая синтаксиса и команд VBA, пытаетесь из разрозненных кусков процедур и примеров, абсолютно не разобравшись как они работают, слепить что-то работоспособное.
Франкенштейн-то, создавая своего монстра, хотя бы понимал, где какие части тел нужно поставить и как они должны взаимодействовать с другими органами...
Пытаться помогать тут, имхо, бессмысленно. Можно только направить на нужный путь: в Библиотеку за начальными знаниями или в Фриланс за готовым решением.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Цитата статист, 27.12.2016 в 23:05, в сообщении № 11 ()
поупражнялся немного
Судя по Вашим "упражнениям", Вы, владея только макрорекордером :) , не понимая синтаксиса и команд VBA, пытаетесь из разрозненных кусков процедур и примеров, абсолютно не разобравшись как они работают, слепить что-то работоспособное.
Франкенштейн-то, создавая своего монстра, хотя бы понимал, где какие части тел нужно поставить и как они должны взаимодействовать с другими органами...
Пытаться помогать тут, имхо, бессмысленно. Можно только направить на нужный путь: в Библиотеку за начальными знаниями или в Фриланс за готовым решением.

Автор - Alex_ST
Дата добавления - 28.12.2016 в 13:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » однотипная операция с фильтром (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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