我正在使用一个宏,该宏创建工作表的副本,然后将其重命名,删除一些列并将公式插入到单元格中,然后将其向下拖动。
将其拖下的部分不起作用!
Sub filterData()
'
' filterData Macro
' Filter data
'
' Keyboard Shortcut: Ctrl+m
'
Sheets("devices").Select
Sheets("devices").Copy After:=Sheets(1)
Sheets("devices (2)").Select
Sheets("devices (2)").Name = "filterData"
ActiveWorkbook.Save
Columns("G:J").Select
Selection.Delete Shift:=xlToLeft
Columns("H:AA").Select
Selection.Delete Shift:=xlToLeft
ActiveWorkbook.Save
Range("G2").Select
ActiveCell.FormulaR1C1 = _
"=LEFT(devices!RC[4],IFERROR(SEARCH("""""""",devices!RC[4]),SEARCH(""-"",devices!RC[4]))-1)"
ActiveWorkbook.Save
Range("G2").Select
Selection.AutoFill Destination:=Range("Table122[Display]")
Range("Table122[Display]").Select
End Sub
如您所见,将公式向下拖动到最后一个填充的单元格的部分不起作用!!!
更新资料
我也在代码中添加了以下内容,但仍然无法正常工作;
lastrow = Range("G2").End(xlUp).Row --new line
Range("G2").Select
ActiveCell.FormulaR1C1 = _
"=LEFT(devices!RC[4],IFERROR(SEARCH("""""""",devices!RC[4]),SEARCH(""-"",devices!RC[4]))-1)"
Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G" & lastrow) --new line
最佳答案
由于它是一个表(VBA ListObject),因此您可以一次填写整个ListColumn:
ActiveCell.ListObject.ListColumns("Display").DataBodyRange.Formula = _
"=LEFT(devices!RC[4],IFERROR(SEARCH("""""""",devices!RC[4]),SEARCH(""-"",devices!RC[4]))-1)"
另外,请注意,您可以摆脱由宏记录器生成的
Select
语句。例如:Columns("G:J").Select
Selection.Delete Shift:=xlToLeft
可以只是:
Columns("G:J").Delete Shift:=xlToLeft
最后一条提示是完全限定范围,例如:
Worksheets("filterData").Columns("G:J").Delete Shift:=xlToLeft
因为您已经接受了此答案,所以我现在停止。除了说我喜欢动画!
关于excel - Excel:宏,用于将公式向下拖动到列尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22284748/