我正在尝试执行以下操作。下拉列表单元格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
答案 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