Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Автор Тема: Поиск ошибок в текстовом документе с помощью Excel  (Прочитано 1722 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Бриз _

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 79

Здравствуйте!
Имеется текстовой документ с данными (образец прилагаю), которые записываются в него с помощью сторонней программы. Программа иногда выдает сбои и тогда данные записываются в тхт. файл с ошибками. Что в дальнейшем мешает их обработке, при импорте в сводную таблицу.
Необходимо с помощью Excel вычислить строки с ошибками в тхт. файле и удалить их. Как это делать  - не очень хорошо представляю, а точнее не знаю))). Сама обработка и удаление может происходить в Excel, но окончательный вариант должен быть таким, чтобы можно было все скопировать и вставить обратно в тхт. файл (можно скопировать и ручками). Подскажите, пожалуйста вариант решения!
Образец правильной записи в тхт. файле:
Где: Урал, Татарский яр:На что поймана: Моллюск:Белуга:1543,858:кг
Где: Урал, Татарский яр:На что поймана: Моллюск:Белуга:1665,12:кг
Где: Амур, Богачёво:На что поймана: Крабовое мясо:Троегуб:303:гр
Где: Якутия, р. Агаякан, приток Индигирки:На что поймана: Tvis-102:Щука:1,745:кг
Где: Якутия, р. Кубюме.:На что поймана: Circl-5055:Щука:5,23:кг
Где: Якутия, Речка Буор-Юрях.:На что поймана: Vob-3014:Хариус Сибирский:313:гр
Где: Нева, Локация л.Шмидта:На что поймана: Vob-3014:Щука:1,6:кг
Где: Нева, Локация л.Шмидта:На что поймана: Ручейник:Плотва:90:гр
Где: Волга, с.Переволоки:На что поймана: Червь:Густера:165:гр
Где: Селигер, р. Княжа:На что поймана: Червь:Плотва:1,754:кг
Где: Селигер, Кравотыньский Наволок:На что поймана: Червь:Плотва:349:гр
Где: Урал, Розовый перекат:На что поймана: Лягушка:Сом:533,294:кг
Где: Урал, Татарский яр:На что поймана: Моллюск:Белуга:534,004:кг
Где: Нева, Мост Свободы:На что поймана: живец:Сом:542,026:кг
Где: Амур, Протока бешеная - огороды:На что поймана: Tvis-105:Сом Солдатова:546,263:кг

Образец ОШИБОЧНОЙ записи в тхт. файле:
::Озерная форель:327:гр
::Ручьевая форель:462:гр
::Ручьевая форель:232:гр
::Севанская форель:262:гр
Где: Амур, Богачёво:На что поймана: Перловка::219:гр.
Где: Красивая меча, Островок:На что поймана: Мотыль:Вес: 1,242 кг:1,242:кг

Т.е. получается, что в правильной записи (строка) используется шесть двоеточий для разделения данных – не больше и не меньше. В ошибочных строках число двоеточий больше или меньше шести. А если и равно шести, то между какой-то одной парой двоеточий отсутствуют данные  (Где: Амур, Богачёво:На что поймана: Перловка::219:гр.)
Может это нужно использовать при проверке? Повторюсь, что ошибочные строки не следует приводить в соответствии с правильным стандартом  - их можно просто удалить насовсем.

Файл для обработки прилагаю во вложении.
Записан
NULL

kimtan

  • Старожил
  • ****
  • Уважение: +42/-0
  • Оффлайн Оффлайн
  • Сообщений: 535

Оставил 1500 строк, дабы уменьшить размер файла.
Два доп.столбца для улучшения производительности (в 10 раз)
Записан
Webmoney: E350157549801 Z116603216205 R268084006579

С.М.

  • Постоялец
  • ***
  • Уважение: +38/-0
  • Оффлайн Оффлайн
  • Сообщений: 338


Sub Удалить_строки_с_ошибками()
    Dim Rng As Range, Cell As Range, XRng As Range
    Dim TxtArr, Txt
    Dim N As Long
    '
    Set Rng = Range("A1").CurrentRegion.Columns(1)
    Set XRng = Rng.Cells(Rng.Rows.Count + 1, 1)
    For Each Cell In Rng.Cells
        TxtArr = Split(CStr(Cell.Value), ":")
        If UBound(TxtArr) = 6 Then
            For Each Txt In TxtArr
                If Trim(Txt) = "" Then Set XRng = Union(XRng, Cell)
            Next
        Else
            Set XRng = Union(XRng, Cell)
        End If
    Next
    N = XRng.Cells.Count - 1
    If N > 0 Then
        If MsgBox("Найдено " & N & " ошибочных записей." _
        & vbCr & "Удалить строки с ошибками ?", vbYesNo, "") = vbNo Then Exit Sub
        XRng.Rows.Delete xlShiftUp
    Else
        MsgBox "Ошибочных записей нет.", , ""
    End If
End Sub
Записан
Эксель изощрён, но не злонамерен.

Бриз _

  • Пользователь
  • **
  • Уважение: +0/-0
  • Оффлайн Оффлайн
  • Сообщений: 79

 kimtan и С.М. огромное спасибо, что откликнулись и помогли!!!
Попробовал оба варианта, макрос все же работает немного шустрее. Ошибок в обработке тоже пока не нашел. Но обнаружилось, что существуют еще ошибочные записи (они из других модов игры):

неправильно - Где: Волхов, Грозовые тучи:На что поймана: Tvis-106 №2:Сом:3,507:кг
   правильно - Где: Волхов, Грозовые тучи:На что поймана: Tvis-106:Сом:3,507:кг

т.е. в названии приманки должен отсутствовать >> №2  <<, есть еще №1 и №3.
Можно ли добавить в документ поиск и удаление этих ошибочных строк?
Записан
NULL

С.М.

  • Постоялец
  • ***
  • Уважение: +38/-0
  • Оффлайн Оффлайн
  • Сообщений: 338

            For Each Txt In TxtArr
                If Trim(Txt) = "" Then
                    Set XRng = Union(XRng, Cell)
                ElseIf Trim(Txt) Like "*№#" Then
                    Set XRng = Union(XRng, Cell)
                End If
            Next
Записан
Эксель изощрён, но не злонамерен.
 



Темы без ответов

09.08.2019 14:09 Макрос для заполнения таблиц через форму 4987
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 4405
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 5964
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 3109
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 4910
15.03.2017 15:45 автозамена картинок PowerPoint 3833
11.03.2017 13:43 Изменить нумерацию страниц 3761
07.02.2017 18:43 Блокировка ячеек по наступлению даты 2869
28.08.2016 19:29 Одинаковые заголовки после обновления оглавления 3374
07.08.2016 17:33 Определить нумерацию как элемент стиля 3587





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.213 секунд. Запросов: 106.