【问题标题】:Formatting combined numbers in Excel for wind data在 Excel 中为风数据格式化组合数字
【发布时间】:2021-04-11 06:18:37
【问题描述】:

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

例如

WD WS COMBINED
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

【问题讨论】:

  • 我需要合并后的数据看起来像:050 12 或 360 21 - 但您的表格显示的列 Combined 不同,所以该相信什么?
  • 要将数字输出为字符串,请使用 Format() 函数,例如 Format(50, "000")。然后,您可以将该字符串与可能以类似方式创建的另一个字符串连接。

标签: excel vba format numbers


【解决方案1】:

下面的 sn-p 虽然还没有准备好粘贴和执行,但应该可以帮助您。

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 总是很危险的。最好在代码中为工作表命名。

上面的 sn-p 将输入表读入一个数组。重要的是在 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,必须通过可能仅使行号以某种关系调整到 @987654326 来使其成为动态的@。重点是展示如何设置“组合”列的值。

【讨论】:

  • 嗨 Variatus,感谢您的建议。我会试试的。我还发现了适用于电子表格中单个单元格的 CONCATENATE 函数。但是,当我尝试在我的代码中使用它来自动执行所有行时,它会显示“预期语句结束”。 Dim xy As Worksheet Set xy = Worksheets("combine") Dim LRow As Long With ActiveSheet LRow = .Cells(.Rows.Count, "A").End(xlUp).Row .Columns(9).Insert xy.Range ("I3:I" & LRow).Formula = "=CONCATENATE(TEXT(B5,"000")," ",TEXT(C5,"00")," ","G"," ",TEXT(G5 ,"00"))" 结尾
  • 当你想在引用中包含引号时,你必须在引号之间写一个双引号。在立即窗格中尝试? """"。我不明白公式中的“G”是变量还是字母,但假设它是字母(字符串),也许这是您要分配的公式。 "=CONCATENATE(TEXT(B5,""000 ""),TEXT(C5,""00 ""),""G "",TEXT(G5,""00""))"。请注意,我已在 TEXT 函数的掩码中包含了您希望插入的空格,以避免大量引号。
  • 成功了!非常感谢您的帮助。我几乎完成了我的项目:)
  • 太棒了!现在唯一剩下的就是将答案标记为“已选择”。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多