【问题标题】:Autofill method of Range class failed: VBARange 类的自动填充方法失败:VBA
【发布时间】:2014-11-10 13:59:34
【问题描述】:

我是 VBA 新手,我无法理解我的代码在哪里出错。尝试执行 If 语句后,我收到消息“Range 类的自动填充方法失败”。

我的代码是:

 Columns("H:H").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(C[-6] = ""Commodities Ags/Softs"", (IF(RC[-3]=R1C24,""Y"",(IF(RC[-3]=R2C24,""Y"",(IF(RC[-3]=R3C24,""Y"",(IF(RC[-3]=R4C24,""Y"",(IF(RC[-3]=R5C24,""Y"",(IF(RC[-3]=R6C24,""Y"",(IF(RC[-3]=R7C24,""Y"",(IF(RC[-3]=R8C24,""Y"",(IF(RC[-3]=R9C24,""Y"",""N"")))))))))))))))))),"""")"
Selection.AutoFill Destination:=Columns("H:H"), Type:=xlFillDefault

它在最后一行失败,If 语句很好,任何帮助将不胜感激,

干杯

【问题讨论】:

  • 为什么不简单地Columns("H:H").FormulaR1C1 = ...
  • 理论上可行,但它会冻结 Excel 工作表。我想我错误地指定了它,或者根本没有,但我需要一种方法来识别最后填充的行并填充到那里
  • 实际上有一千个关于查找最后一行的问题(已经回答)。 .. 你甚至在 SO 上用谷歌或搜索过吗?
  • 悉达多替我回答了这个问题。你必须明白我有一个补救级别的 VBA,我不知道最好的方法去做我想做的事情。我在谷歌上搜索,但有时很难应用我的发现,对给您带来的不便深表歉意。
  • 不麻烦,我只是想教你如何钓鱼。你已经认识到你并没有真正指定你需要什么——作为回应,我说“你应该用谷歌搜索它!”。如果你把这两部分放在一起,你最终会得到@Sid 的答案:)

标签: excel autofill vba


【解决方案1】:

这是你正在尝试的吗?

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> Find last row in Col H
        lRow = .Range("H" & .Rows.Count).End(xlUp).Row

        '~~> Enter the formula in one go
        .Range("H1:H" & lRow).FormulaR1C1 = "=IF(C[-6] = ""Commodities Ags/Softs"", " & _
                                            "(IF(RC[-3]=R1C24,""Y"",(IF(RC[-3]=R2C24,""Y""," & _
                                            "(IF(RC[-3]=R3C24,""Y"",(IF(RC[-3]=R4C24,""Y""," & _
                                            "(IF(RC[-3]=R5C24,""Y"",(IF(RC[-3]=R6C24,""Y""," & _
                                            "(IF(RC[-3]=R7C24,""Y"",(IF(RC[-3]=R8C24,""Y""," & _
                                            "(IF(RC[-3]=R9C24,""Y"",""N"")))))))))))))))))),"""")"
    End With
End Sub

【讨论】:

  • 是的,这就是我想要发生的事情。基本上,我想说的是 C 列 =“Commodities Ags/Softs”,然后用 If 语句填充 H 列,如果可能的话,只需粘贴值,即 Y 或 N。
【解决方案2】:

Autofill 是这样工作的:

SingleCell.AutoFill MoreCells

你有

ColumnH.AutoFill ColumnH

如果你想使用自动填充,它可能看起来像这样

With ActiveSheet.Range("H1")
    .FormulaR1C1 = _
    "=IF(C[-6] = ""Commodities Ags/Softs"", (IF(RC[-3]=R1C24,""Y"",(IF(RC[-3]=R2C24,""Y"",(IF(RC[-3]=R3C24,""Y"",(IF(RC[-3]=R4C24,""Y"",(IF(RC[-3]=R5C24,""Y"",(IF(RC[-3]=R6C24,""Y"",(IF(RC[-3]=R7C24,""Y"",(IF(RC[-3]=R8C24,""Y"",(IF(RC[-3]=R9C24,""Y"",""N"")))))))))))))))))),"""")"
    .AutoFill Destination:=.Resize(100, 1), Type:=xlFillDefault
End With

我没有自动填充一百万行的整个 b/c 列,而且我没有那种时间。

Siddharth 的 R1C1 答案是可行的方法,我只是想提醒您有关自动填充的注意事项。

【讨论】:

  • 请注意,我对语法很不熟悉!
猜你喜欢
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
相关资源
最近更新 更多