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)
– 这可能是也可能不是问题 - 你可以使用variables
i
而不是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