Добрый день, уважаемые пользователи, читатели и гуру замечательной программы. Написал макрос на выполнение формулы для сбора данных по функции VLOOKUP. Выполняется всё как надо. Но встал вопрос, как сделать так чтобы при не пустом значении ячейки, происходила заливка выбранных ячеек. На данный момент заливка идет всех выбранных ячеек, без результата сбора данных. Пустая она остается или всё же заполняется значением. Код макроса:
Код
Sub Макрос4()
Application.ScreenUpdating = False
ActiveCell.FormulaR1C1 = _ "=IFERROR(VLOOKUP(RC[-1],Таблица1,2,0),"""")"
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.FillDown
ActiveSheet.ShowAllData
Range("G:G").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Application.CutCopyMode = False
Range("G8").Select
End Sub
Пожалуйста помогите. Если можно то прямо с изменениями данного кода. Спасибо
Sub Макрос4()
Application.ScreenUpdating = True
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Таблица1,2,0),"""")"
If ActiveCell <> "" Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Selection.FillDown
ActiveSheet.ShowAllData
Range("G:G").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("G8").Select
End Sub
Sub Макрос4()
Dim LastRow As Long, Rng As Range
Application.ScreenUpdating = False
LastRow = Cells(Rows.Count, "H").End(xlUp).Row 'последняя строка в столбце H
Set Rng = Range("I4:I" & LastRow)
With Rng
.Formula = "=IFERROR(VLOOKUP(H4,Таблица1,2,0),"""")"
.Value = .Value
.SpecialCells(xlCellTypeConstants, 18).Interior.Color = 65535
End With
'если надо снять Автофильтр
'If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("I2").Select
Application.ScreenUpdating = True
End Sub
Mershik, необходимо чтобы происходила заливка выбранных ячеек, и только в тех, в которых результат формулы VLOOKUP не равен пустому значению. На данный момент происходит заливка всех выбранных ячеек, не зависимо осталась ячейка пустой или получила какое-то значение.
New, добрый день. Пробую применить Ваш код к своему реестру. Ошибок не выдает, но и сбор информации происходит не корректно. К примеру если искомое значение "1", формула не подставляет значение "рыба". Или если искомое значение "5", формула подставляет значение "какао", вместо "масло"