Страницы: 1
RSS
Как внести значения по множественной фильтрации в новый столбец
 
всем доброго времени суток. никак не могу найти и придумать строки кода, для того чтоб внести значение, например 50, в отфильтрованный диапазон данных начиная со 2 видимой строки. (в первой строке заголовки). вариант с Range(Selection, Selection.End(xlUp)).Select    Selection.FillDown как то не работает.... в примере в ручную выбраны необходимые фильтры, для которых надо проставить значения, далее планирую просто планирую прокопипастить текст макроса и поменять параметры фильтрации и вставить сброс фильтров.
 
дополню пост нашел в форуме следующий код
Код
Sub PasteToVisible()
Dim copyrng As Range, pasterng As Range
Dim cell As Range, i As Long
 
'запрашиваем у пользователя по очереди диапазоны копирования и вставки
Set copyrng = Application.InputBox("Диапазон копирования", "Запрос", Type:=8)
Set pasterng = Application.InputBox("Диапазон вставки", "Запрос", Type:=8)
 
'проверяем, чтобы они были одинакового размера
If pasterng.Cells.Cells.Count <> copyrng.Cells.Count Then
MsgBox "Диапазоны копирования и вставки разного размера!", vbCritical
Exit Sub
End If
 
&#39;переносим данные из одного диапазона в другой только в видимые ячейки
For Each cell In pasterng
If cell.EntireRow.Hidden = False Then
cell.Value = Cells(cell.Row, copyrng.Column).Value
End If
Next cell
End Sub
но он немного не подходит, потомучто нет необходимости копировать диапазон, но надо вставить определенное значение в весь отфильтрованный диапазон.  
 
и снова добавлю результат мозгового штурма макрос 1 в примере. но вылазит ошибка
Код
1Sub Макрос1()
2
3    ActiveSheet.Range("$A$1:$C$C19").AutoFilter Field:=1, Criteria1:="е"
4    ActiveSheet.Range("$A$1:$C$C19").AutoFilter Field:=2, Criteria1:=">=0", _
5      Operator:=xlAnd, Criteria2:="<=3"
6      Range("A1:C" & Row_End).SpecialCells(xlCellTypeVisible)(1).Select
7      Range("selection").Value = 50
8    Selection.AutoFilter
9 End Sub


    
     
      
       
       

Изменено: МОЛОЕЦ - 19.01.2020 10:37:07
 
Цитата
МОЛОЕЦ написал:
Range("selection")
где Вы такое вообще нашли? Кто подсказал такой синтаксис? Что за диапазон такой с именем selection? Selection - сам по себе объект Range, обозначающий выделенный на текущий момент диапазон. И дополнительно его прописывать текстом не надо, будет ошибка(если такого именованного диапазона нет в книге, конечно).
Далее, когда выполняете строку:
Код
Range("A1:C" & Row_End).SpecialCells(xlCellTypeVisible)(1)
что планируете выделить? Все видимые ячейки или только первую область? Если второе - то, да - код именно это и делает. Если же хотели все - зачем (1)?
В общем достаточно было написать так:
Код
Range("A2:C" & Row_End).SpecialCells(xlCellTypeVisible).Value = 50
Хотя мне кажется, что Вам надо что-то такое:
Код
    ActiveSheet.Range("$A$1:$C$19").AutoFilter Field:=2, Criteria1:=">=0", _
       Operator:=xlAnd, Criteria2:="<=3"
    Range("C2:C19").SpecialCells(xlCellTypeVisible).Value = 50 'заносим значение 50 в видимые ячейки столбца С(исключая заголовок)
    ActiveSheet.Range("$A$1:$C$19").AutoFilter
Изменено: Дмитрий(The_Prist) Щербаков - 19.01.2020 11:15:01
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
МОЛОЕЦ  написал:Range("selection")где Вы такое вообще нашли? Кто подсказал такой синтаксис? Что за диапазон такой с именем selection? Selection - сам по себе объект Range, обозначающий выделенный на текущий момент диапазон. И дополнительно его прописывать текстом не надо, будет ошибка(если такого именованного диапазона нет в книге, конечно).Далее, когда выполняете строку:Код ? 1Range("A1:C" & Row_End).SpecialCells(xlCellTypeVisible)(1)что планируете выделить? Все видимые ячейки или только первую область? Если второе - то, да - код именно это и делает. Если же хотели все - зачем (1)?В общем достаточно было написать так:Код ? 1Range("A2:C" & Row_End).SpecialCells(xlCellTypeVisible).Value = 50Хотя мне кажется, что Вам надо что-то такое: Код ? 1234    ActiveSheet.Range("$A$1:$C$19").AutoFilter Field:=2, Criteria1:=">=0", _       Operator:=xlAnd, Criteria2:=" Дмитрий(The_Prist) Щербаков  - 19 Янв 2020 11:15:01


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

P.S. тема закрыта
Изменено: МОЛОЕЦ - 19.01.2020 11:25:30
Страницы: 1
Наверх