找到特定值,复制偏移量

时间:2014-07-22 20:39:23

标签: vba excel-vba excel

我正在尝试执行以下操作。下拉列表单元格B63中显示的值有时可能出现在“审阅”表中的C列中。在评论表上,我希望它找到以A列(RngStart)中的单词“Before After”开头的部分,在C列中找到B63值,如果是,则复制F列中的值(Offset( 1,3))。从单元格A7(RngDest)开始,所有信息都粘贴到名为Mkting的工作表中。现在这是我的工作代码,但它不起作用。救命啊!

Sub test()

Dim RngStart As Range, RngDest As Range
Dim Sector1 As String

Sector1 = Sheets("Dropdowns").Range("B63").Value

With Sheets("Mkting")
    Set RngDest = .Range("A7")
End With

Set ws = Sheets("Review")
Set RngStart = ws.Columns("A").Find("Before After", , xlValues, xlPart)

With Sheets("Review").Range("C" & RngStart.row & ":" & "C1000")
    .AutoFilter 1, Sector1
    .Offset(1, 3).Copy RngDest
    .AutoFilter
End With

End Sub

1 个答案:

答案 0 :(得分:1)

这对你有用。我感到困惑的唯一部分是你的段落中的Offset(1,3)。此代码从匹配的列F行中获取值。如果你想从匹配中下一行,改变 RngDest.Value = Sheets(" Review")。范​​围(" F"& ctr).Value RngDest.Value =表格("评论")。范​​围(" F"& ctr + 1 )。值

我建议您使用Like Operator作为目标。如果您不使用 Option Explicit 选项比较文字放在模块顶部 Option Explicit 或第1行>(你应该总是这样。)

其余部分是一个简单的循环,通过Review工作表查找您指定的那两个条件。它将它找到的每个匹配放在Mkting工作表上,从单元格A7开始。

Option Compare Text

Sub test()
    Dim RngDest As Range
    Dim Sector1 As String
    Dim MaxRow As Long
    Dim ctr As Long

Sector1 = Sheets("Dropdowns").Range("B63").Value
Set RngDest = Sheets("Mkting").Range("A7")
MaxRow = Sheets("Review").Range("A" & Rows.Count).End(xlUp).Row

For ctr = 1 To MaxRow
    If Sheets("Review").Range("A" & ctr).Value Like "Before After*" And Sheets("Review").Range("C" & ctr).Value Like Sector1 Then
        RngDest.Value = Sheets("Review").Range("F" & ctr).Value
        Set RngDest = RngDest.Offset(1, 0)
    End If
Next ctr

End Sub