如果特定单元格包含特定文本,则复制多个单元格的VBA代码

时间:2015-04-11 21:16:43

标签: excel-vba vba excel

我是新来的,我在问题中提前道歉并不清楚...经过一些研究后我找不到答案...

我正在寻找一种方法来浏览列“R”的所有单元格,如果给定行上的一个单元格包含“Y”,则列“W”,“X”和“列”处的单元格值Y“将采用与”F“,”G“和”H“列相同的值(始终在同一行)。

目标是有一个按钮来执行VBA代码以执行此操作(而不是一直复制/粘贴)。

非常感谢您的帮助。

一个可怜的无知但有动力的VBA初学者......

1 个答案:

答案 0 :(得分:0)

这是VBA,它会做你想要的。它利用替换操作是使用Resize

彼此相邻的单元格

亮点

  1. 遍历R列中的每个单元格。我在工作表上使用Intersect和UsedRange,这样它只会遍历包含值的单元格(而不是一直到最后)。
  2. 使用InStr检查“Y”。
  3. 使用列FGH中的值替换WXY列的内容。由于它们是连续的,我使用Resize一步完成了所有操作。
  4. 代码:

    Sub ReplaceValuesBasedOnColumn()
    
        Dim rng_search As Range
        Dim rng_cell As Range
    
        'start on column R, assume correct sheet is open
        Set rng_search = Range("R:R")
        For Each rng_cell In Intersect(rng_search, rng_search.Parent.UsedRange)
    
            'search for a Y, case sensitive
            If InStr(rng_cell, "Y") > 0 Then
    
                'update the columns as desired
                'takes advantage of cells being next to each other
                Range("W" & rng_cell.Row).Resize(1, 3).Value = Range("F" & rng_cell.Row).Resize(1, 3).Value
    
            End If
        Next rng_cell
    End Sub
    

    我在我的最后测试了它,它运行起来,在运行后生成以下内容:

    picture after running