Excel VBA: найти и удалить несколько значений из строк в одном столбце

StackOverflow https://stackoverflow.com/questions/4564560

Вопрос

Справочная информация: Мне нужно очистить файл 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», «», «-») на нулевое значение, но я не уверен, как, как это Чтобы собрать это вместе.

Любая помощь будет очень оценена.

Это было полезно?

Решение

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

  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

Обратите внимание, что код работает, поиск первого происхождения числа в описании и вычеркивая все после этого. Это предполагает, что первое событие числа всегда обозначает цену. Если у получателя платежа есть номер в имени, то код не удастся, например, платеж карты на телефоны4U

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top