2015-02-26 2 views
1

В настоящее время я пытаюсь ввести эту формулу в ячейку с помощью vba.как связать формулу с столбцом, который был отфильтрован?

Selection.AutoFilter Field:=10, Criteria1:="*FG*" 

Set Rng = Worksheets("Sheet1").Range("J2:J" & lastRow) 

Set TopVisibleCell = Rng.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1) 

    TopVisibleCell.Formula = _ 
    "=IF(ISERROR(LEFT(I2,SEARCH("" - "",I2)-1)),I2,LEFT(I2,SEARCH("" - "",I2)-1))" 

Я пытаюсь ввести формулу в столбце P после того, как я отфильтровал столбец I, который является полем = 10. Формула topvisiblecell.formula вводится в столбец P. Формула останется неизменной после того, как я отфильтровал столбец I. Скажем, я отфильтровал столбец I, который начинается с строки 200, но в столбце P формула остается I2. как изменить, следуя столбцу I, который я отфильтровал?

+0

I» m confused. Столбец I - столбец 9, а не 10, и ваш код добавляет формулу в столбец J, а не P. Можете ли вы уточнить свое намерение? (Я думаю, что решение будет состоять в использовании .FormulaR1C1, чтобы вы могли указать столбец номер) – Rory

ответ

0

Я использую это:

.Range("A:Z").AutoFilter Field:=10, Criteria1:="10" 
.Range("B2:B200").SpecialCells(xlCellTypeVisible).Value = "=A" & .UsedRange.SpecialCells(xlCellTypeVisible).Row & "/2" 

это привело бы формулу «= A + номер строки +/2 во всех строках B, поэтому

B2=A2/2, B3=A3/2 

и т.д ..

Смежные вопросы