0

我有一个使用 VB 程序填充的 Excel 表。输出表可以有可变数量的行,但有 6 列 (A:F)。现在我希望 G 列具有 A 列中所有行的 hex2dec。这是一个示例:假设 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

但它不起作用。

4

2 回答 2

1

尝试这个:

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
于 2013-07-29T12:44:53.890 回答
1

查看您的 HEX2DEC 公式字符串

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

我建议使用 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 对象之前手动选择输入范围来解决此问题,例如

For Each C In Selection.Columns(1).Cells
于 2013-07-29T12:46:10.360 回答