Excel VBA: найти и удалить несколько значений из строк в одном столбце
-
14-10-2019 - |
Вопрос
Справочная информация: Мне нужно очистить файл CSV в моей банковской выписке для использования в онлайн -инструменте финансовой отчетности.
Все транзакции находятся в следующих форматах (столбцы, разделенные запятыми):
0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9
Проблема, которую у меня есть, заключается в том, что информация в столбце THRID уникальна из -за включения суммы транзакции и даты - «платеж карты Микки Маусу*29,90 Гбитт. 22-12-2010*». Следовательно, я вынужден классифицировать все 200+ транзакций индивидуально, что не является привычным с моим психическим благополучием.
Лучшее решение, о котором я могу подумать,-это удалить все числа из этого столбца и найти и заменить все избыточные термины («GBP ON», «», «-») на нулевое значение, но я не уверен, как, как это Чтобы собрать это вместе.
Любая помощь будет очень оценена.
Решение
Следующее может вам помочь. Я делаю следующие предположения:
- Вы получаете данные о онлайн -банкингах в формате .csv изначально
- Ваш третий столбец всегда из формы
TextDescription+Amount+Currency+Date
- В файле .csv третий столбец - столбец C в рабочей книге
Следуй этим шагам:
- Откройте файл .csv
- Открыть редактор VBE, нажав
ALT + F11
- Выбирать Вставить> Модуль с панели инструментов
В модуле вставьте следующий код, поместите курсор в любом месте в коде, а затем нажмите «F5»
Sub CleanTransaction() Dim rng As Range, cl As Range Dim lastRow As Long, iChar As Long lastRow = Range("C1").End(xlDown).Row Set rng = Range("C1:C" & lastRow) For Each cl In rng For iChar = 1 To Len(cl) If IsNumeric((VBA.Mid$(cl, iChar, 1))) Then cl = VBA.Trim$(VBA.Left$(cl, iChar - 1)) End If Next iChar Next cl End Sub
Это должно сделать следующее для каждого элемента в столбце C:
CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010
... становится ...
CARD PAYMENT TO MICKEY MOUSE
Обратите внимание, что код работает, поиск первого происхождения числа в описании и вычеркивая все после этого. Это предполагает, что первое событие числа всегда обозначает цену. Если у получателя платежа есть номер в имени, то код не удастся, например, платеж карты на телефоны4U