2017-02-10 75 views
-2

我可以在VBA中编写代码(我一直无法做到)。我想替换文本在B列的所有单元格替换同一列中的文本

当在小区中的特定文本在B列,在A列的单元格的特定的文本,我想细胞B列是替换为另一个文本。例如,如果在列B中的单元格中存在'否'或'其他',并且在列A中存在'拒绝';我希望B列的文本('否'或'取消')被替换为'拒绝'。 将不胜感激的帮助。由于

Worksheets("HIA").Columns("B").Replace _ What:="No", Replacement:="Decline", _ SearchOrder:=xlByColumns, MatchCase:=True

+0

“帮助”看起来像“这是我的代码,请帮我修复它”。不是“这是我的要求,请提供代码” –

+0

@TimWilliams我一直只能替换同一列中的文本。以下是代码: 工作表(“HIA”),列(“E”),替换_ 什么:=“否”,替换:=“拒绝”,_ SearchOrder:= xlByColumns,MatchCase:= True – Adsar

回答

0

以下应该有所帮助:

Sub Example() 

    Dim wb As Workbook 
    Dim sht As Worksheet 

    Set wb = ActiveWorkbook 'change if required 
    Set sht = ActiveSheet 'change as required 

    With sht 'use with sht to save typing ActiveSheet loads of times 
     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'find the last row that has data 
     For Row = 2 To LastRow 'loop through each row and check the values 
      If (.Cells(Row, 2) = "Refused" And .Cells(Row, 1) = "No") Or (.Cells(Row, 2) = "Refused" And .Cells(Row, 1) = "Other") Then 
       .Cells(Row, 1) = "Decline" 
      End If 
     Next Row 
    End With 

End Sub 

注意它如何工作在解释代码中的注释。如果有帮助,请投票!

+0

谢谢寻求帮助。请允许我请您编辑代码,使列的顺序相反。我相应地编辑了我的问题。 – Adsar

+0

上面的答案使用“单元格”属性,它通过数字而不是名称引用单元格。 语法是Cells([行号],[列号])。所以细胞(1,1)指的是A1,细胞(1,2)指的是B1等等。 所以当上面的代码说.Cells(Row,2)=“拒绝”时,它正在寻找第二列(B)中拒绝的字。如果你想在列A中寻找拒绝,那么你会将2更改为1. 我希望以上信息可以帮助您自己编辑代码。通过单元循环是掌握非常方便的技巧! – McPaddy

+0

这正是我想要的。完美的作品。谢谢 – Adsar