Excel 2013: encontre uma sequência, substitua o valor na coluna adjacente, na pasta de trabalho

2

Eu tenho uma pasta de trabalho com várias centenas de folhas. Para todas as instâncias em que Clear Votive Cupaparece na coluna B , preciso alterar o valor da coluna H na mesma linha (de 2.49para 1.49). Isso precisa se aplicar a todas as planilhas.

As colunas são consistentemente B e H , mas as linhas variam. Não consigo usar o Find-Replace porque existem outros valores 2.49que precisam permanecer 2.49. Posso criar uma If-Thendeclaração que pesquise a pasta de trabalho inteira?

Jessie
fonte

Respostas:

0

Este programa simples fará o truque. Isso contém dois loops:

Para cada ws em ThisWorkbook.Worksheets

Isso é um pouco auto-explicativo. Isso percorrerá cada planilha na sua pasta de trabalho que contém esse código.

Dentro do loop acima, há outro "sub loop":

Para r = 2 Para lastRow (ws, "B")

Portanto, já sabemos do loop anterior que wsé a planilha atual no "loop pai". r = 2 é a linha inicial (você pode alterar para r = 1 se NÃO tiver cabeçalhos de coluna). lastRowé uma função que incluí no código abaixo para determinar automaticamente a última linha em qualquer coluna (no seu caso, estamos usando a coluna 2 / coluna B).

O código a seguir foi testado e funciona:

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
K.Dᴀᴠɪs
fonte