对于 VBA 循环。宏 Excel 程序

Posted

技术标签:

【中文标题】对于 VBA 循环。宏 Excel 程序【英文标题】:For VBA loops. Macro Excel Program 【发布时间】:2014-06-13 11:07:24 【问题描述】:

我的项目使用 VBA 时遇到问题。我有这个有数千行的列。

这些列的值如0.05, 1.3 等。它还有大于符号< 的复杂值,如<0.05, <0.02,这是我真正的问题。我想为此解决方案使用If ElseLooping。但我不知道怎么做。我是 VBA 宏 excel 的初学者。

我希望从这些行中发生的事情是,如果宏检测到一个具有

Edit1:上传的图片

我希望你明白我对这件事的看法。对不起我的英语不好。感谢您的帮助。

【问题讨论】:

首先在 VBA 中使用If IsNumeric(Range) Then 捕获单元格值中带有“Range.Value = CDbl(Replace(Range.Value,"<",""))/2,假设覆盖了值。 【参考方案1】:

这是使用Autofilter 的更快方法。使用Autofilter 将确保您不必遍历每个单元格。

示例截图

代码

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range, aCell As Range, fltrdRng As Range
    Dim LRow As Long

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> Remove any filters
        .AutoFilterMode = False

        '~~> Get the last row of Col H where your data is
        LRow = .Range("H" & .Rows.Count).End(xlUp).Row

        '~~> Set your range
        Set rng = .Range("H1:H" & LRow)

        With rng
            .AutoFilter Field:=1, Criteria1:="=<*"
            Set fltrdRng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        End With

        If Not fltrdRng Is Nothing Then
            For Each aCell In fltrdRng.Cells
                If aCell.Row > LRow Then Exit For

                '~~> 8 is for Col H
                If aCell.Column = 8 Then
                    aCell.Value = Replace(aCell.Value, "<", "")
                    aCell.Value = Val(Trim(aCell.Value)) / 2
                End If
            Next aCell
        End If
        '~~> Remove any filters
        .AutoFilterMode = False
    End With
End Sub

【讨论】:

哇,答案很快,真的很管用。非常感谢@Siddhart Rout。它有很大帮助。也感谢那些回答我问题的人。我很喜欢这个网站和周围的人,这样的天才人物。上帝保佑。【参考方案2】:

然后试试这个:

Sub RemoveComplicatedValues()
Dim rng As Range, cel As Range
Dim x

Set rng = Range("H2", Range("H" & Rows.Count).End(xlUp).Address)

For Each cel In rng
    If InStr(1, cel, "<") <> 0 Then
        x = CSng(Split(cel, "<")(UBound(Split(cel, "<"))))
        cel = x / 2
    End If
Next     
End Sub

如果需要,您还可以完全限定您的 WorkbookSheet。 希望这会有所帮助。

【讨论】:

以上是关于对于 VBA 循环。宏 Excel 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBA宏程序将excel中的内容批量复制到word文档中去

如何用VBA宏程序将excel中的内容批量复制到word文档中去

我在excel中使用VBA宏程序时,报错无法执行,为啥!前提,程序没有问题,因为单位机器运行良好

使用vba程序,实现excel数据库模板生成sql数据库结构

使用vba程序,实现excel数据库模板生成sql数据库结构

如何使用 Excel VBA 宏循环行?