按标题选择列,使用宏选择ROUND到最近的便士

问题描述 投票:0回答:1

我需要使用宏来舍入到最近的便士。我通过当前设置的宏(参见下面的代码)获得了“Round”功能,以显示弹出窗口,供用户手动选择要舍入的数据。

但是,我想让宏自动选择整个数据填充范围(只有在填充数据的地方 - 这将是不同的列和每次长的不同行数)标题为“费率”的列并应用ROUND功能:ROUND(DATA,2)

Dim Rng As Range
Dim WorkRng As Range
Dim xNum As Integer
On Error Resume Next
xTitleId = "ROUND Formula"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Use Mouse to select entire FEE RATE column, then click on OK", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
Rng.Value = Application.WorksheetFunction.Round(Rng.Value, 2)
Next
excel vba
1个回答
0
投票

这是一种方法,使用Find查找标题(假设它在第1行),然后假设范围是下一个单元格一直向下。如果只有一个条目,您可能希望从底部开始处理。

您也可以使用Evaluate来避免循环,尽管它可能具有边际效益。

Sub x()

Dim rFind As Range
Dim Rng As Range
Dim WorkRng As Range

Set rFind = Rows(1).Find(What:="FEE RATE", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)
If Not rFind Is Nothing Then
    Set WorkRng = Range(rFind.Offset(1), rFind.End(xlDown))
    'For Each Rng In WorkRng
    '    Rng.Value = Application.WorksheetFunction.Round(Rng.Value, 2)
    'Next
    WorkRng = Evaluate("IF(" & WorkRng.Address & "="""","""",ROUND(" & WorkRng.Address & ",2))")
End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.