Excel 发回匹配的整个rom,而不仅仅是匹配的值
匹配代码在匹配行上回发匹配值(如果存在)我需要回发匹配的整行,而不仅仅是Excel 发回匹配的整个rom,而不仅仅是匹配的值,excel,resize,vba,Excel,Resize,Vba,匹配代码在匹配行上回发匹配值(如果存在)我需要回发匹配的整行,而不仅仅是匹配 但我不知道如何调整大小 谢谢 Sub FindMatches() Dim PostBackWS As Worksheet Dim FindRng As Range, ReplaceRng As Range, fCell As Range, rCell As Range Dim LC as Long Set FindRng = GetRange("OriginalData", "A", "B", "B", 2, Fal
匹配
但我不知道如何调整大小
谢谢
Sub FindMatches()
Dim PostBackWS As Worksheet
Dim FindRng As Range, ReplaceRng As Range, fCell As Range, rCell As Range
Dim LC as Long
Set FindRng = GetRange("OriginalData", "A", "B", "B", 2, False)
Set ReplaceRng = GetRange("NewData_Prepped", "A", "AA", "AA", 2, False)
Set PostBackWS = ThisWorkbook.Sheets("XXX")
LC = Sheets("OriginalData").Cells(1, Columns.Count).End(xlToLeft).Column
For Each fCell In FindRng
If DoesMatchExists(fCell, ReplaceRng) = True Then
'This posts back the matched cell value
'PostBackWS.Range(fCell.Address).Value = fCell.Value
'I want to post back the entire row of matched cell
PostBackWS.Range(fCell.Address) = Sheets("OriginalData").Range(fCell.Address).Resize(1, LC)
'I have also tried
PostBackWS.Range(fCell.Address).Offset(0, 1) = fCell.EntireRow
End If
Next fCell
End Sub
UDF
Function DoesMatchExists(ByVal FindValue As String, LookInRange As Range) As Boolean
DoesMatchExists = Not LookInRange.Find(FindValue, , xlValues, xlWhole, xlByRows, xlNext, MatchCase:=False) Is Nothing
End Function
Function GetRange(shtName As String, lcLetter As String, ColLetter1 As String, ColLetter2 As String, Optional startRow As Long = 2, Optional absRange As Boolean = False) As Range
Dim LastCellRow As Object
Dim ws As Worksheet
Dim LastRow As Long, LastColRow As Long
Set ws = ThisWorkbook.Sheets(shtName)
Select Case absRange
Case False
With ws
LastRow = .Range(lcLetter & .Rows.Count).End(xlUp).Row
Set GetRange = .Range(.Cells(startRow, ColLetter1), .Cells(LastRow, ColLetter2))
End With
Case True
With ws
Set LastCellRow = .Cells.Find(what:="*", _
After:=.Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
LastRow = LastCellRow.Row
Set GetRange = .Range(.Cells(startRow, ColLetter1), .Cells(LastRow, ColLetter2))
End With
End Select
结束函数经过几个小时我想出了
Function GetRowRangeOfCell(FindRange As Range)
Set GetRowRangeOfCell = FindRange.Offset(0, -(FindRange.Column - 1)).Resize(1, FindRange.CurrentRegion.Columns.Count)
End Function
然后就这样用
GetRowRangeOfCell(fCell).Copy Destination:=PostBackWS.Range(fCell.Address).Offset(0, -(fCell.Column - 1) + LC)