Я использую VBA для автофильтрации большого списка. (Чуть менее 5000 строк). В частности, я ищу поставщика в журнале расходов. Когда я запускаю этот код, он находит, что многие поставщики в порядке, но не другие.
Private Function testMcTesterson()
Dim icell As Range
Dim tempStr As String
Dim i As Integer
Dim w As Workbook
Dim expLog As Workbook
Dim vendorName As String
Set expLog = Workbooks("FY18 Manual Expense Log.xlsm")
Set w = ActiveWorkbook
For Each icell In Selection
vendorName = VendorNormalizer(icell.Value)
expLog.Activate
'Filter by vendor
Debug.Print "Vendor name is " & "'" & vendorName & "'"
ActiveSheet.Range("A1").AutoFilter field:=5, Criteria1:=vendorName
w.Activate
Next icell
End Function
Я вызываю другую функцию, созданную мной, чтобы нормализовать имена поставщиков. Некоторые из них не работают (и некоторые из них), но сейчас я борюсь с Amazon. У нас есть несколько транзакций из Amazon, но ни одна не показывается.
Вещи, которые я проверил до сих пор:
- Введите имя поставщика в автофильтр. Это приводит к результатам, поэтому это не тот случай, когда строки исключаются из фильтра.
Проверьте, какие столбцы автофильтрованы. Только столбец поставщика, поэтому код не применяет фильтр к неправильному столбцу. (Также, потому что это работает для других поставщиков)
Я подозревал, что проблема может быть связана с выводом моей нормализующей функции, поэтому я вставил свой оператор debug.print. Непосредственно перед запуском фильтра консоль выдает «Имя поставщика -« Amazon »». До или после пробелов нет. Я скопировал это прямо из моего непосредственного окна, на случай, если я просто что-то написал неправильно.
- Я даже проверил typename (vendorName), и он возвращает строку.
Я уверен, что решение прямо перед моим лицом, я просто не вижу его.
Помощь!
Редактировать: вот соответствующий код для VendorNormalizer
Private Function VendorNormalizer(vendorName As String)
Select Case True
'Lots of other cases
Case InStr(1, vendorName, "Amazon", vbTextCompare) > 0
VendorNormalizer = "Amazon"
'Lots of other cases
End select
'If statements for exact matches
End function
В таблице, которую я ищу, есть все эти (и нет других записей Amazon) в столбце, который я фильтрую. (скопировано и вставлено)
- AMAZON.COM
- Amazon marketplace
- Amazon.com
- AMAZON MKTPLACE PMTS