VB的Excel的拖动公式为可变的行数

我有一个Excel表格,我正在使用VB程序填充。 输出表可以具有可变数量的行,但是具有6列(A:F)。 现在我想让列G具有列A中所有行的hex值。下面是一个例子:说列A有400行(A1:A400),那么我想让G1:G400的值为HEX2DEC(A1:A400)。 但这只是一个例子,行可以变化。 到目前为止,我有这个代码:

Sub DataMod() Dim i As Long, R3 As Long R3 = 1 For i = 1 To sheet.UsedRange.Rows.Count sheet.Cells(i, 7).Formula = "=HEX2DEC" & sheet.Cells(R3, 1) R3 = R3 + 1 Next i End Sub 

但它不工作。

查看你的HEX2DEC公式string

  • 它不包括必要的()
  • Cells()将返回目标单元格的值,而不是它的地址(即结果将是=HEX2DEC(1234)而不是=HEX2DEC(A1) – 这可能是也可能不是问题
  • 你可以使用variablesi而不是R3 ,它们都以相同的增量从相同的起点增量

我build议使用FormulaR1C1,那里没有变体

 Sub DataMod() Dim C As Range For Each C In ActiveSheet.UsedRange.Columns(1).Cells C(1, 7).FormulaR1C1 = "=HEX2DEC(RC[-6])" Next C End Sub 

UsedRange的危险在于它可能包含任何标题行,因此您可能想要在启动Sub()并使用Selection对象之前手动selectinput范围,例如

 For Each C In Selection.Columns(1).Cells 

尝试这个:

 Sub DataMod() ' Get the number of rows used in Column A: Dim NumRows as Long NumRows = Range("A1").End(xlDown).Row ' Put the formulas in Column G all at once: Range("G1:G" & NumRows).FormulaR1C1 = "=Hex2Dec(RC1)" End Sub