简体   繁体   中英

For each cell in column range table

I need help fixing my code and adding in the cell ranges.

I am trying to change the values in the cells to being the correct values if they are spelt incorrectly. But the table will be added to so I need to make it a flexible code. The code currently stops at the beginning sub with error code 424. I am fairly new to VBA and am stuck.

Sub Consolidates()
 Dim datasheet As Worksheet

Set datasheet = ThisWorkbook.Sheets("sheet1")

lr = datasheet.Cells(Rows.Count, 9).End(xlUp).Row
For x = 2 To lr


If cell.Value = "B" Or "BR" Or " Then
cell.Value = "BR"
   ElseIf cell.Value = "CL" Or "CR" _
        Then cell.Value = "CR"
                ElseIf cell.Value = "" Then
                End If
                Next x
End Sub

Cell needs a reference to which cell. Also you can't use the or statement like that. Below a simple way to get it done.

For x = 1 To lr
    If Cells(x, 9).Value = "B" Or Cells(x, 9).Value = "BR" Then
        Cells(x, 9).Value = "BR"         
    ElseIf Cells(x, 9).Value = "CL" Or Cells(x, 9).Value = "CR" Then
        Cells(x, 9).Value = "CR"
    End If
Next x

You should consider a select statement

For x = 1 To lr
    Select Case Cells(x, 9).Value
        Case "B", "BR"
            Cells(x, 9).Value = "BR"
        Case "CL", "CR"
            Cells(x, 9).Value = "CR"
    End Select
Next x

Since it is case sensitive you could add an Lcase which could save you some time

For x = 1 To lr
    Select Case LCase(Cells(x, 9).Value)
        Case "b", "br"
            Cells(x, 9).Value = "BR"
        Case "cl", "cr"
            Cells(x, 9).Value = "CR"
    End Select
Next x

you could use something like follows

Option Explicit

Sub Consolidates()
    Dim stringsToSearch As String, stringToSubstitute As String
    Dim stringsToSearchArr As Variant, stringToSubstituteArr As Variant

    ' here define the "table"
    stringsToSearch = "B,CL" '<--| type here the strings to be searched for
    stringToSubstitute = "BR,CR" '<--| type here the corresponding strings to change searched ones into

    stringsToSearchArr = Split(stringsToSearch, ",") '<--| turn "stringsToSearch" into an array
    stringToSubstituteArr = Split(stringToSubstitute, ",") '<--| turn "stringToSubstitute" into an array

    With ThisWorkbook.Sheets("sheetTest") '<--| change "sheetTest" with your actual sheet name
        With .Range("I2:I" & .Cells(.Rows.Count, 9).End(xlUp).Row) '<--| consider all cells in column "I" from row 2 to last non empty one
            For i = LBound(stringsToSearchArr) To UBound(stringsToSearchArr) '<--| loop through the "table"
                .Replace What:=stringsToSearchArr(i), Replacement:=stringToSubstituteArr(i), LookAt:=xlWhole, MatchCase:=True '<--| find current string and replace it with its corresponding replacement
            Next i
        End With
    End With
End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM