首页 > 解决方案 > 在 Excel 中为风数据格式化组合数字

问题描述

我在 Excel 中有一个数据表,其中一列有风向,另一列有风速。我想结合风速和风向,然后将其格式化为某种方式。

所以例如

西部数据 WS 组合
050 12.23 50 12.23
360 21.54 360 21.54

我需要合并的数据看起来像:050 12 或 360 21 等。我已经成功地将数据合并到一个带有以下代码的新列中,但在我的一生中无法按照我需要的方式格式化数字。非常感谢任何帮助!

Public Sub CombineWind()

Dim xy As Worksheet

Set xy = Worksheets("combine")
 Dim LRow As Long
    With ActiveSheet
        LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Columns(8).Insert
        xy.Range("H3:H" & LRow).Formula = "=B3 & "" "" & C3"
    End With

 With ActiveSheet
        LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Columns(9).Insert
        xy.Range("I3:I" & LRow).Formula = "=D3 & "" "" & E3"
    End With

With ActiveSheet
        LRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Columns(10).Insert
        xy.Range("J3:J" & LRow).Formula = "=F3 & "" "" & G3"
    End With

Range("H2") = "Average"
Range("I2") = "Min"
Range("J2") = "Max"
End Sub

标签: excelvbaformatnumbers

解决方案


下面的代码片段虽然还没有准备好粘贴和执行,但应该可以帮助您。

Dim Arr As Variant

With ActiveSheet
    ' take the value of a range from A1 to end x 7 columns
    Arr = .Range(.Cells(1, 1), .Cells(.Rows.Count, "A").End(xlUp)).Resize(, 7).Value
End With

With xy
    For R = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
        .Cells(R, "H").Value = Format(Arr(3, 2), "000 ") & Format(Arr(3, 3), "hh:mm")
    Next R
End With

使用ActiveSheet总是很危险的。最好在代码中命名工作表。

上面的代码片段将输入表读入一个数组。重要的是在 A1 中启动数组,这样 Arr(1, 1) = A1,因此 Arr(3, 2) = B3。无需进一步帮助即可轻松阅读。

.Cells(R, "H")Value标识要设置其属性的正确单元格,但Format(Arr(3, 2), "000 ") & Format(Arr(3, 3), "hh:mm")仅指定所采用数组的 B3 和 C3 必须通过可能仅使行号以某种关系调整来使其动态化R。重点是展示如何设置“组合”列的值。


推荐阅读