Excel VBA: поиск и удаление нескольких значений из строк в одном столбце - PullRequest
1 голос
/ 30 декабря 2010

Справочная информация. Мне необходимо очистить CSV-файл банковской выписки для использования в онлайн-инструменте финансовой отчетности.

Все транзакции имеют следующие форматы (столбцы разделяются запятыми):

0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9

Проблема, с которой я столкнулся, заключается в том, что вся информация в столбце «три» уникальна, поскольку в ней указана сумма и дата транзакции: «ОПЛАТА КАРТОЧКИ В МИКШИЙСКИЙ МЫШЬ * 29.90 GBP НА 22-12-2010 *». Следовательно, я вынужден классифицировать все 200+ транзакций по отдельности, что не способствует моему психическому благополучию.

Лучшее решение, которое я могу придумать, это удалить все числа из этого столбца и найти и заменить все избыточные термины ("GBP ON", ".", "-") нулевым значением, но я не знаю, как это сделать.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 30 декабря 2010

Следующее может помочь вам. Я делаю следующие предположения:

  1. Сначала вы получаете банковские реквизиты в формате .csv
  2. Ваш третий столбец всегда имеет форму TextDescription+Amount+Currency+Date
  3. В файле .csv третьим столбцом является столбец C в рабочей книге

Выполните следующие действия:

  1. Открыть файл .csv
  2. Откройте редактор VBE, нажав ALT + F11
  3. Выбрать Вставить> Модуль на панели инструментов
  4. В модуле вставьте следующий код, поместите курсор в любом месте кода, а затем нажмите `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

Обратите внимание, что код работает, ища первое вхождение числа в описании и удаляя все после этого. Это предполагает, что первое вхождение числа всегда обозначает цену. Если у получателя платежа был номер в имени, то код потерпел бы неудачу, например. ОПЛАТА КАРТОЧКИ НА PHONES4U

...