powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Усреднение в ТXТ/СSV файле
15 сообщений из 15, страница 1 из 1
Усреднение в ТXТ/СSV файле
    #35207240
Yakov500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!!!
Я бы сразу хотел сказать, что я начинающий и пишу макросы в VB с книжкой на коленках.
Не могли бы вы мне помочь с проблемой с которой я столкнулся.

Есть Файл CSV который содержит уйму строк (значительно больше 65000, ограниечение Excel) следующего вида:
3/11/2008 2:33:58 PM,-999.25,-999.25,-999.25,-999.25
3/11/2008 2:34:00 PM,-999.25,-999.25,-999.25,-999.25
3/11/2008 2:34:01 PM,-999.25,-999.25,-999.25,-999.25
3/11/2008 2:34:03 PM,-999.25,-999.25,-999.25,-999.25
3/11/2008 2:34:15 PM,-999.25,-999.25,-999.25,-999.25
3/11/2008 2:34:16 PM,-999.25,-999.25,-999.25,-999.25

нужно усреднить значения по столбцам за указанный промежуток времени (скажем каждые 5 минут)

То есть открыв файл как txt прочитав строку с использованием разделителя как я понимаю я должен проверить время, и складывать строки в какой то временный листок экселя до тех пор пока дата не будет равной предыдущая плюс указанный интервал. Но как это сделать если время меняется (часы, минуты секунды, дата) не получится просто сравнивать секунды например.
И потом я нужно будет найти среднее значение и выложить его на постоянное место.

Пожалуйста помогите, если можно примером. Я просто ума не приложу как это сделать, даже в теории.
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35207669
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерчик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    ' создаём файл schema.ini
    Dim iFile As Integer
    iFile = FreeFile()
    Open "c:\test\schema.ini" For Output As #iFile
    Print #iFile, "[data.txt]"
    Print #iFile, "Format = CSVDelimited"
    Print #iFile, "ColNameHeader = False"
    Print #iFile, "DecimalSymbol = ."
    Close #iFile
    
    ' читаем данные из файла
    Dim rst As Object
    Set rst = CreateObject("ADODB.Recordset")
    rst.Open "select dateserial(year(f1), month(f1), day(f1)) + timeserial(hour(f1), minute(f1) - (minute(f1) mod 5), 0), " & _
        "avg(f2), avg(f3), avg(f4), avg(f5) from [data.txt] " & _
        "group by dateserial(year(f1), month(f1), day(f1)) + timeserial(hour(f1), minute(f1) - (minute(f1) mod 5), 0)" _
        , "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="""c:\test\"";Extended Properties=""Text"""
        
    ' помешаем усреднённые данные на рабочий лист
    Range("A1").CopyFromRecordset rst
    
    ' закрываем набор записей
    rst.Close
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35207995
Yakov500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное за пример я не предполагал даже что можно использовать Эксесс точнее я всегда его использовал с юзерским интерфейсом только.

У меня выдает ошибку синтекса в строке открытия файла. Вы не поверите я потатил 5 часов уже с книжками но до сих пор не понимаю где там ошибка (пробовал удалить одну из ковычек которая по моему мнению лишняя тогда появлялась другая ошибка Unspecified Error)
Очень плохо что нет функции в MS Eccess записать макрос!!! Так бы можно было записать строку открытия файла и вставить.

PAПримерчик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    ' создаём файл schema.ini
    Dim iFile As Integer
    iFile = FreeFile()
    Open "c:\test\schema.ini" For Output As #iFile
    Print #iFile, "[data.txt]"
    Print #iFile, "Format = CSVDelimited"
    Print #iFile, "ColNameHeader = False"
    Print #iFile, "DecimalSymbol = ."
    Close #iFile
    
    ' читаем данные из файла
    Dim rst As Object
    Set rst = CreateObject("ADODB.Recordset")
    rst.Open "select dateserial(year(f1), month(f1), day(f1)) + timeserial(hour(f1), minute(f1) - (minute(f1) mod 5), 0), " & _
        "avg(f2), avg(f3), avg(f4), avg(f5) from [data.txt] " & _
        "group by dateserial(year(f1), month(f1), day(f1)) + timeserial(hour(f1), minute(f1) - (minute(f1) mod 5), 0)" _
        , "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="""c:\test\"";Extended Properties=""Text"""
        
    ' помешаем усреднённые данные на рабочий лист
    Range("A1").CopyFromRecordset rst
    
    ' закрываем набор записей
    rst.Close
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210173
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yakov500Спасибо огромное за пример я не предполагал даже что можно использовать Эксесс точнее я всегда его использовал с юзерским интерфейсом только. А где ты тут увидел "Эксесс"?

Yakov500У меня выдает ошибку синтекса в строке открытия файла. Вы не поверите я потатил 5 часов уже с книжками но до сих пор не понимаю где там ошибка (пробовал удалить одну из ковычек которая по моему мнению лишняя тогда появлялась другая ошибка Unspecified Error)Ну а первую ошибку мы угадывать должны?


PS И вообще, что такое "Эксесс"? Если имелся в виду MS Access то он произносится как "аксес".
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210791
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

У нас он произносится именно Эксэс, с ударением на первую гласную! Це ж английский. А парень под Access пока понимает все, что "шевелится", это как раз понятно. Мне непонятно другое, почему создается именно ini файл, подразумевающий свою структуру с секциями, ключами и значениями, под которую есть свои, заточенные под INI файлы API функции.

Я бы, если уж пошла такая пляска, использовал:

Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32.dll" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

для работы с INI.

Но я все равно не понимаю, как это работает, я так еще не делал. Я посмотрел пример и что-то не нашел, как вообще используется создаваемый в начале кода файл "schema.ini"

Там такое есть: Source="""c:\test\""; Но это не имя файла, а имя директории файла...
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210817
Yakov500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я и того больше запутался а только и хотелось то сделать маааленький макрос который бы усреднял данные :)
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210835
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnУ нас он произносится именно Эксэс, с ударением на первую гласную! Це ж английский. У вас? В Коннектикуте? Странно. Первая гласная там краткая "а" должна быть. А ударение действительно на первый слог.

VladConnМне непонятно другое, почему создается именно ini файл, подразумевающий свою структуру с секциями, ключами и значениямиНе просто ini файл. А schema.ini , этот файл личная фишка текстового OLE DB драйвера от мелкомягких. В нем каждая секция это имя текстового файла из которого драйвер будет читать данные а в секции идут описания "колонок" из текстового файла. Можешь считать schema.ini как набор sysobjects+syscolumns таблиц только не в нормальной БД, а для текстовых файлов которые лежат в той же директории что и сам schema.ini.
Вот тут читай: http://msdn2.microsoft.com/en-us/library/ms709353.aspx
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210836
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там идея, кстати, напрашивается сама, пусть меня поправят желающие из зала, если я ошибаюсь :

- в ini файл записываются метаданные на файл данных
- создается объект recordset
- recordset открывается согласно записанному SQL запросу, при его открытии должны указываться имя файла данных и имя файла метаданных ( с последним - скорее всего проблема, вы вот и попробуйте указать)
- результат сбрасывается на лист EXCEL в ранг, начинающийся с ячейки "A1"
- recordset закрывается

f1,..., f4 - подразумеваемые имена полей вашего файла данных, они же должны как-то фигурировать, если ColNameHeader = False. recordset их правильно поймет, они по-порядочку пронумерованы системой. Например, 3/11/2008 2:33:58 PM - это из f1.

Кстати, проследите, чтобы в вашем файле данных тоже не было заголовков полей для примера от PA.

Прошу прощения у PA за вторжение...
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210839
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yakov500А я и того больше запутался а только и хотелось то сделать маааленький макрос который бы усреднял данные :)А ты возьми и сделай его. Как он будет работать ты уже в самом первом письме описал. Делай свой макрос, а когда застрянешь - прийдешь с конкретным вопросом.
И кстати, в примере PA действительно нету использования MS Access. Да и не нужен он тут вообще.
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210842
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn- recordset открывается согласно записанному SQL запросу, при его открытии должны указываться имя файла данных и имя файла метаданных ( с последним - скорее всего проблема, вы вот и попробуйте указать) С последним проблем не будет :) Я уже дал ссылку на документацию.
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210850
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl VladConnУ нас он произносится именно Эксэс, с ударением на первую гласную! Це ж английский. У вас? В Коннектикуте? Странно. Первая гласная там краткая "а" должна быть. А ударение действительно на первый слог.

White Owl, первая гласная там не "А", а "Эй". В закрытом слоге - просто "Э". Це ж английский. ;0)
Буквы, ВСЕГДА обозначающей звук, близкий к русскому "А", у нас вообще нет. Но вот, к примеру, слово body (тело), произносится у нас как раз как "бади". У нас буковок то - 24 кажется. А звуков - много больше. Вот и смущаем весь честной народ. Не обессудь. Не виноватые мы. Нам римляне такой алфавит дали, сами мучаемся.
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35210875
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnWhite Owl, первая гласная там не "А", а "Эй". В закрытом слоге - просто "Э". Це ж английский. ;0)Вот именно что английский. Краткий "а" там. В словарь загляни да у коллег спроси.
И букв в алфавите 26 а не 24.
А body произносящийся как бади это американизм. В британском английском там все же краткое "о" будет.
И вообще, нашел кого учить языку :)
Модератор:
флуд.
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35212461
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, Нет там краткого "а'. Там аналог краткого русского "Э". Period!

I speak English fluently... Even if it's Yankee English, why not to teach you, a bit ...? You can't bit me in this. Relax and enjoy!

Talking seriously, it is likely that such a kind of pronunciation (I mean yours) nobody would even understand in USA. Well, they could (may be), however they would make it with a great dose of sympathy and compassion.

:0))
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35212549
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я насчет флуда: только что увидел. В принципе, мы обсуждали корректное произношение терминологических слов, имеющих отношение к VB, правда не в тему вопроса, это надо признать.

:0)
...
Рейтинг: 0 / 0
Усреднение в ТXТ/СSV файле
    #35212571
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для тех кто в танке поясняю — тема топика "Усреднение в ТXТ/СSV файле". А особенности "Yankee English" выясняйте не здесь.
Тема закрыта.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Усреднение в ТXТ/СSV файле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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