powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка массива. Нужна помощь.
14 сообщений из 14, страница 1 из 1
Обработка массива. Нужна помощь.
    #38773816
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги!

У меня проблема не могу разрулить обработку данных.
Есть текстовый файл структурированный.
Файл могу распарсить и превести к массиву данных:

№;К1 ;К2
1;А ;Б
0; ;В
2;Г ;Д
3;Е ;Ё
0; ;Ж


Нужно обработать массив и на выходе получить следующее:
№;К1 ;К2
1;А ;БВ
2;Г ;Д
3;Е ;ЁЖ


Второй день бьюсь. Помогите!!!
Всё это реализуется на VBA.
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773818
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам исходный файл можно увидеть?
И/или файл с результатом.
А то не совсем понятно - что за "массив" вы имеете в виду.
Или услышать более подробный алгоритм получения результата (особенно интересует то, что вы подразумеваете под словом "массив" :).
Или, раз ЭТО - для VBA, то сообщите хотя бы, в каком из приложений Офиса вы собираетесь это делать.
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773827
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Реализовую в VBA MS Access.

Таблица на входе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Поле 1|Поле2        |Поле3
----------+---------------+--------
         1|ААА          | БББ
           |CCC          | 
         2|EEE          |KKK
         3| JJJ           |LLL
           |UUU         |
         4|OOO         |TTT
           |                |QQQ

Таблица на выходе

Код: plaintext
1.
2.
3.
4.
5.
6.
Поле 1|Поле2        |Поле3
----------+---------------+--------
         1|АААCCC   | БББ
         2|EEE          |KKK
         3|JJJUUU     |LLL
         4|OOO         |TTTQQQ
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773829
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, теперь уже таблица. Так что же надо обрабатывать, массив, текстовый файл или таблицу?

И, если уж хотите наглядно оформить, загляните сюда
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773831
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные в таблицах, то почему бы не сделать SQL-запросом?
Правда тогда другой вопрос возникает - по какому полю идет сортировка.
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773838
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да таблица, но она в тектовом файле, по итогам обработки текстовых файлов могу получить структуру как уже описывал:
Поле 1Поле2Поле31АААБББ0CCC 2EEEKKK3 JJJLLL0UUU4OOOTTT0QQQ

в виде массива, рекордсета.

После чего мне нужно получить таблицу в таком виде:
Поле 1Поле2Поле31АААCCCБББ2EEEKKK3JJJUUULLL4OOOTTTQQQ
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773841
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЕсли данные в таблицах, то почему бы не сделать SQL-запросом?
Правда тогда другой вопрос возникает - по какому полю идет сортировка.
Так в том то и дело что поля "Поле 2" и "Поле 3" там где стоит нолик в "Поле 1" это продолжение значения предыдущего поля (такое вот дурацкое форматирование)

Поле 1Поле2Поле3 Примечание1АААБББ0CCCЗначение "ССС" это продолжение значения из предыдущей строки "ААА"2EEEKKK3JJJLLL0UUUЗначение "UUU" это продолжение значения из предыдущей строки "JJJ"4OOOTTT0QQQЗначение "QQQ" это продолжение значения из предыдущей строки "TTT"
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773859
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как массив эти данныеобработать проще, нежели даже написать запрос. Хотя правильно распарсить текст было бы ещё проще :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim a(0 to ... , 0 to ...)
' здесь запись в массив
' и предположим, что первый элемент массива - не 0
' далее - обрабатываем
last = 0
for i=lbound(a,1) to ubound(a,1)
  if a(i,1)=0 then a(last,2)=a(last,2) & a(i,2) else last=i
next
' далее - например, копируем/экпортируем массив, пропуская строчки с 0

И да, можно было бы "в процессе" создавать новый массив с данными, но зачем?
Проще - выгрузить массив в таблицу и удалить из неё строки с 0 в первом поле...
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773861
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM
Код: vbnet
1.
 if a(i,1)=0 then

if a(i,0)=0 ... конечно же
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773864
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMКак массив эти данныеобработать проще, нежели даже написать запрос. Хотя правильно распарсить текст было бы ещё проще :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim a(0 to ... , 0 to ...)
' здесь запись в массив
' и предположим, что первый элемент массива - не 0
' далее - обрабатываем
last = 0
for i=lbound(a,1) to ubound(a,1)
  if a(i,1)=0 then a(last,2)=a(last,2) & a(i,2) else last=i
next
' далее - например, копируем/экпортируем массив, пропуская строчки с 0

И да, можно было бы "в процессе" создавать новый массив с данными, но зачем?
Проще - выгрузить массив в таблицу и удалить из неё строки с 0 в первом поле...

Согласен. Распарсить правильно было бы проще. Но я не могу поянть как в процессе парсинга объеденять текщее значение поля с предыдущим?
Допустим, что этот массив у меня в таблице. Тогда снова вопрос как обработать таблицу с помощью запроса чтобы объеденять текщее значение поля с предыдущим?
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773869
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем здесь "таблица"? Я же говорю - распарсить ТЕКСТ. В процессе чтения исходного текстового файла .
Или вы данные из файла тупо открываете (импортируете встроенными средствами) прямо как таблицу в базе Access'а? Модет, стоит поменять что-то в алгоритме первичного импорта, вместо того, чтобы мужественно бороться с последствиями? Хотя... чует моя пятая точка, что даже под словом "парсинг" мы с вами понимаем разные вещи, что уж далее... :)
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773873
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMПричем здесь "таблица"? Я же говорю - распарсить ТЕКСТ. В процессе чтения исходного текстового файла .
Или вы данные из файла тупо открываете (импортируете встроенными средствами) прямо как таблицу в базе Access'а? Модет, стоит поменять что-то в алгоритме первичного импорта, вместо того, чтобы мужественно бороться с последствиями? Хотя... чует моя пятая точка, что даже под словом "парсинг" мы с вами понимаем разные вещи, что уж далее... :)

Ок. Согласен. Не внятно излагаю.
Предлагаю обсудить парсинг.
Так текстовый файл и выглядит в виде таблицы -- это определённого рода отчёт в котором кроме данных представленных в виде таблицы с переносами по некоторым полям.

Что я делаю.
Я открываю файл с помощью Scripting.FileSystemObject и построчно читаю.
У меня получается по определным меткам выбирать только табличные данные (так как файл содержит так же и заголовки -- это текстовой отчёт).
Обработав файл, у меня на выходе может быть либо массив либо рекордсет.
Так вот если есть возможность в момент парсинга получить исходную таблицу -- то это будет просто великолепно.
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773880
kvikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если ещё я не надоел. Прилагаю оригинальный файл, который я пытаюсь обрабатывать.
...
Рейтинг: 0 / 0
Обработка массива. Нужна помощь.
    #38773888
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kviktесли есть возможность в момент парсинга получить исходную таблицуКонечно, есть :)
Но Офис - он такой Офис... надо писать свой парсер.
проверьте свою почту
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка массива. Нужна помощь.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]