Excel 2013:查找字符串,替换工作簿中相邻列中的值

Excel 2013:查找字符串,替换工作簿中相邻列中的值

我有一本包含数百张工作表的工作簿。对于Clear Votive Cup出现在B栏,我需要改变的值H 列在同一行(从2.491.49)。这需要应用于所有工作表。

列始终H,但行有所不同。我无法使用“查找-替换”,因为还有其他值2.49需要保留2.49。我可以创建一个If-Then搜索整个工作簿的语句吗?

答案1

这个简单的程序可以解决这个问题。它包含两个循环:

对于 ThisWorkbook.Worksheets 中的每个 ws

这有点不言自明。这将循环遍历工作簿中包含此代码的每个工作表。

上面的循环包含另一个“子循环”:

对于 r = 2 到 lastRow(ws, "B")

因此,我们已经从上一个循环中知道了ws“父循环”中的当前工作表。r = 2 是起始行(如果没有任何列标题,可以将其更改为 r = 1)。lastRow是我在下面的代码中包含的一个函数,用于自动确定任何列中的最后一行(在您的情况下,我们使用第 2 列/第 B 列)。

以下代码已经过测试并可运行:

Option Explicit

Sub changeRows()
    
    Dim ws As Worksheet, r As Long

    For Each ws In ThisWorkbook.Worksheets
        ws.Activate
        For r = 2 To lastRow(ws, "B")
            If ws.Cells(r, 2) = "Clear Votive Cup" Then
                ws.Cells(r, "H") = 1.49
            End If
        Next r
    Next ws

End Sub

Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
    Debug.Print ws.Name
    With ws
        lastRow = .Cells(.Rows.Count, col).End(xlUp).row
    End With
End Function

相关内容