powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Долгая обработка текстовых данных в Экселе
25 сообщений из 172, страница 6 из 7
Долгая обработка текстовых данных в Экселе
    #36562159
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там примерно того же порядка объем, в данном случае около 120 кБ. Насчет Split и InStr я понял. Но главные тормоза в них разве? Вроде бы до этого пришли к выводу, что в обращении к ячейкам.
Можно попробовать переделать и на InStr.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562179
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAndrFА попробовать:
Я говорил про самодельный StringBuilder (которые есть в вашем примере, в моем под именем clsConcat ), а не System.Text.StringBuilder. Сколько повторять?

Ну я уже тоже говорил, что самодельные классы вполне можно доработать, чтобы строки буфера добавлялись в коллекцию заданными блоками и объединялись в единую строку только при запросе результата. Тогда не будет перераспределения большого объема памяти - думаю так и работает NET-овский StringBuilder. Тогда и разница со StringBuildera-ми VB6 и NET версий сведется к минимуму.

Ну а как простейший выход (чтобы ничего не переделывать, ибо это уже просто влом при наличии готового NET) - выделять буфер в StringBuilder-e большими порциями - скажем по нескольку мегабайт...
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562202
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль, что с InStr у меня не получается ловко управляться. В основном я делал строку такого вида, чтобы её было легко резать Split'ом
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562217
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, если у кого-нибудь есть желание переписать за большое спасибо мой код с использованием InStr, я буду рад :)
Сама строка имеет вид Лист1~B2|value`C2|value`...`:::Лист2~B2|value`C2|value`:::Лист3~B2|value`C2|value`
Нужно аналогичным образом выудить значения соответствующие и присвоить их листу, например для ячейки B2 на листе 1 будет значение value.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562219
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayВ общем, если у кого-нибудь есть желание переписать за большое спасибо мой код с использованием InStr, я буду рад :)

Этот код был предложен мной еще на первой странице этого топика
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562220
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь немного отличается формат строки, это уже строка другого вида. Сначала идут названия листов, потом знак тильды, потом все ячейки, относящиеся к этому листу, потом разделитель ":::", потом следующий лист.
Тут надо по-другому немного обрабатывать.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562222
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayЗдесь немного отличается формат строки, это уже строка другого вида. Сначала идут названия листов, потом знак тильды, потом все ячейки, относящиеся к этому листу, потом разделитель ":::", потом следующий лист.
Тут надо по-другому немного обрабатывать.

Ну так доработайте
общий принцип же ясен
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562224
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562379
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayДаже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела.
Я хотел-бы услышать название продукта и фирмы производителя, потому что motorwayПользоваться системой будут, если получится, не обычные "одиночные пользователи", а люди из фирмы с большими запросами. Так что если такая ситуация будет на первом испытании системы, дальше они даже разговаривать не будут. :) у меня фирма с большими запросами и я хоть буду знать от чего нужно отбрыкиваться всеми способами.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562408
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЯ хотел-бы услышать название продукта и фирмы производителя, ....буду знать от чего нужно отбрыкиваться всеми способами.

Зачем?
"А я милаавааа.... узнаю да папахоооод-ке...." (с)
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562592
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> "А я милаавааа.... узнаю да папахоооод-ке...." (с)

Но не все так хорошо узнали "милаавааа...", что-бы узнавать по походке. Кому-то глядишь и пригодится :D

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562605
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayДаже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела.

Что поделаешь...
С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно...
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36562637
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: AndrF
> С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно...


+1000
Браво! можно я буду цитировать эту фразу?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36563709
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно...


+1000
Браво! можно я буду цитировать эту фразу?

Можно.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36563921
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
Я хотел-бы услышать название продукта и фирмы производителя
В данном случае это не важно, у меня возникла конкретная проблема, когда много ячеек в таблице. А сам продукт всех устроит.
То, что мне сложно исправить тот код, объясняется плохим состоянием здоровья - делаю эту программу из последних сил с постоянной тяжестью в голове. Так что тут не очень смешно всё.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36563949
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: motorway
> То, что мне сложно исправить тот код, объясняется плохим состоянием здоровья - делаю эту программу из последних
> сил с постоянной тяжестью в голове. Так что тут не очень смешно всё.

Я совершенно не смеялся спрашивая о названии, потому, что незнание основ объясняется их не знанием, а не плохим
здоровьем. Хотя плохое самочувствие тоже накладывает отпечаток, здесь могу только посочувствовать и пожелать скорейшего
выздоровления. Но использовать продукт, который разрабатывает программист имеющий очень поверхносные представления о
возможностях языка я не хочу.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36563970
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основы VBA я в целом знаю, в данном случае просто на переделку алгоритма с использованием другой функции мне потребуется время, т.к. нужно вникнуть в суть предложенной оптимизации. Ну и часто приходится работать поздно вечером, производительность тогда маленькая.
С точки зрения пользователя я думаю, что более важен функционал (которого, в частности, нет в других продуктах), а при использовании продукта, если все работает нормально, пользователь даже не подозревает, хороший или не очень программист.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36563980
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и на самом деле, если бы вы увидели весь функционал, то вы бы не стали отбрыкиваться даже при минусах в интерфейсе и скорости...
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36569592
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, обнаружил еще одну возможную проблему. Может ли в принципе тормозить посылка данных на сервер (localhost)? Делаю с помощью WinHttpRequest.Send, посылается где-то 200 кб. Сделал вывод сообщения до этой команды и после, и почему-то 2 минуты это занимает.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36569635
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот еще подскажите, как организовать при изменении ячеек их добавление в некоторый массив (Range), откуда дальше будет идти считывание? Сейчас у меня цикл по всему листу, а я хочу только по изменившимся ячейкам. При этом дубликаты должны удаляться, если ячейку изменяли несколько раз.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36569971
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayИ вот еще подскажите, как организовать при изменении ячеек их добавление в некоторый массив (Range), откуда дальше будет идти считывание? Сейчас у меня цикл по всему листу, а я хочу только по изменившимся ячейкам. При этом дубликаты должны удаляться, если ячейку изменяли несколько раз.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim colChanged As Collection

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sKey As String
    if colChanged Is Nothing then Exit Sub 'коллекцию нужно инициализировать только после того, 
                                 'как загружен основной массив данных, иначе туда попадут все ячейки
    sKey = Target.Row & ":" & Target.Column
    On Error Resume Next
    colChanged.Add Target, sKey
    If Err.Number <>  0  Then 'если ячейка уже менялась и есть в коллекции
        colChanged.Remove sKey
        colChanged.Add Target, sKey
    End If
End Sub
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36569973
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorwayКстати, обнаружил еще одну возможную проблему. Может ли в принципе тормозить посылка данных на сервер (localhost)? Делаю с помощью WinHttpRequest.Send, посылается где-то 200 кб. Сделал вывод сообщения до этой команды и после, и почему-то 2 минуты это занимает.Раз у вас тормозит, значит в принципе может. Но вообще не должно.
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36571795
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim colChanged As Collection

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sKey As String
    if colChanged Is Nothing then Exit Sub 'коллекцию нужно инициализировать только после того, 
                                 'как загружен основной массив данных, иначе туда попадут все ячейки
    sKey = Target.Row & ":" & Target.Column
    On Error Resume Next
    colChanged.Add Target, sKey
    If Err.Number <>  0  Then 'если ячейка уже менялась и есть в коллекции
        colChanged.Remove sKey
        colChanged.Add Target, sKey
    End If
End Sub
[/quot]
Что-то не очень пойму, как работает ваш код. Я попробовал его вставить, потом изменяю ячейки, но Msgbox colChanged.Count не работает (пробую отобразить число элементов).
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36571804
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorway,

вы не забыли про
Код: plaintext
Set colChanged = New Collection
?
...
Рейтинг: 0 / 0
Долгая обработка текстовых данных в Экселе
    #36571828
motorway
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, этой строки у меня не было, но все равно не работает так как нужно. Теперь все время пишет, что 1 элемент в коллекции.
...
Рейтинг: 0 / 0
25 сообщений из 172, страница 6 из 7
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Долгая обработка текстовых данных в Экселе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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