【问题标题】:code to apply 1D array values to .NumberFormat of 2D array将一维数组值应用于二维数组的 .NumberFormat 的代码
【发布时间】:2019-07-23 22:07:28
【问题描述】:

我在一列(n 行长)中有一组格式,我想将其应用于表(13 列 x n 行)。列中存储的格式是动态的,并且基于数据类型,例如货币、百分比等。例如:#,##0;[Red](#,##0);"-"0.0%;[Red]0.0%;"-"

我希望在更新列时对表格的每一行进行格式化。 注意:我对条件格式不感兴趣。

我最初尝试像 row.NumberFormat = rng2 一样直接引用 rng2,但这似乎陷入了一个永无止境的循环。

Sub formatrows()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim row As Range
    Dim i As Integer
    Set rng1 = Range("Ac7:ao400")
    Set rng2 = Range("d7:d400")
    i = 0
    Range("AC7").Select
    'rng1.ClearFormats
    For Each row In rng1.Rows
        row.NumberFormat = ActiveCell.Offset(i, -25)
        i = i + 1
    Next row
End Sub

这是我想出的方法似乎可行,但相当笨重,我确定有更好的方法来做到这一点?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    简化一点:

    Sub formatrows()
        Dim rng1 As Range
        Dim row As Range
    
        Set rng1 = Range("Ac7:ao400")
        'rng1.ClearFormats
        For Each row In rng1.Rows
            row.NumberFormat = row.EntireRow.Cells(4).value 'take format from ColD
        Next row
    
    End Sub
    

    【讨论】:

    • 爱它!谢谢。那么“单元格”属性中的单个值是指列引用吗?我虽然顺序是行,然后是列......吸取了教训!我很感激你也摆脱了我的计数器。好多了!!
    • 使用单个数字调用 Cells() 将引用调用 Cells() 的范围内的“第 n 个”单元格:对于整行,它将位于 n'工作表的第 th 列,或在完整列上,它将位于第 n 行。如果您在整个工作表上调用 Cells() ,那么它会上下计数,因此 ? ActiveSheet.Cells(columns.Count+1).Address 给出 "$A$2"
    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2013-09-13
    • 2017-10-22
    • 1970-01-01
    • 2016-04-15
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多