使用Excel进行查找marco灵活地覆盖不同的参考长度
我有一个macros正在search用户可能input的invoice number
3个工作表(总共超过260万条logging)。
数字进入一个单元格,它也有一个查阅参考。 forms: invoicenumber, reference_letter
。
原来,这是很好的,因为invoice numbers
是10位数字。 现在他们可以是任何东西,但最后总是有一个逗号,在单个字符引用之前。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$5" Then Exit Sub If Target.Value = "" Then Exit Sub Application.EnableEvents = False Range("B5") = "" For Each sh In Sheets If sh.Name = ActiveSheet.Name Then GoTo 111 sh.Range("B1").FormulaArray = "=IFERROR(MATCH(Main!A5,LEFT(A:A,10),0),"""")" If sh.Range("B1") <> "" Then x = sh.Range("B1") Range("B5") = Right(sh.Range("A" & x), 1) Exit For End If 111 Next sh Application.EnableEvents = True If x = "" Then MsgBox "Not Found!" End Sub
我知道这个10字符的限制是在第8行,我尝试用FIND
replace,但是我认为我没有把它做对(我无法正常工作!)。
我会很感激帮助这个sorting。
我有一个进一步的vLookup是从最后一个字符,并从一个单独的工作表返回文本。
尝试这个
Private Sub Worksheet_Change(ByVal Target As Range) Dim InvLen As Integer If Target.Address <> "$A$5" Then Exit Sub If Target.Value = "" Then Exit Sub Application.EnableEvents = False Range("B5") = "" For Each sh In Sheets If sh.Name = ActiveSheet.Name Then GoTo 111 InvLen = Len(Worksheets("Main").Range("A5").value) sh.Range("B1").FormulaArray = "=IFERROR(MATCH(Main!A5,LEFT(A:A," & InvLen & "),0),"""")" If sh.Range("B1") <> "" Then x = sh.Range("B1") Range("B5") = Right(sh.Range("A" & x), 1) Exit For End If 111 Next sh Application.EnableEvents = True If x = "" Then MsgBox "Not Found!" End Sub