У меня есть макрос, который ищет 3 листа для invoice number
, которые могут ввести пользователи (всего более 2,6 миллиона записей).Выполнение поиска Excel marco flexible для покрытия различных опорных длин
Цифры входят в одну ячейку, которая также имеет ссылку поиска в ней. форма: 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
, но я не думаю, что я был прав (на том основании, что я не мог заставить его работать !).
Буду благодарен за помощь в получении этой сортировки.
У меня есть еще один vLookup, который берет последний символ и возвращает текст с отдельного листа.
Используйте 'метод Instr' найти расположение запятой. Затем вычтите 1 и используйте это значение для количества символов в функции 'Left'. Возможно, вам понадобится также «TRIM», если есть дополнительные пробелы. –
Спасибо Рон. Я вижу, что вы делаете. Как бы тогда закодировать это здесь? Я не могу понять, как читать переменную текущую ячейку: 'instr (1, a: a, ',')' уверен, что a: a неверно. – Nathan
Извините, это в формуле на листе (пропущено это): вы использовали бы функцию листа FIND для этого –