Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Самая быстрая технология забора данных из большого Excel-файла.   Найти похожие ветки 

 
Паша 1   (2007-03-26 14:04) [40]

дык... ВБА не всегда дает нужный код. попробуй заменить на квадратные скобки
Range.Hyperlinks.item[1].Address

судя по всему, это массив


 
Vlad Oshin ©   (2007-03-26 14:07) [41]


> странно... судя по тому, шо ты написал, Cell1 := WorkBook.
> WorkSheets[1].Cells[x, y] - это у тебя объект. как его вместо
> координат подставлять можно?

там вариант просят, ну так и даем вариант
ранж - с ячейки такой по такую, все логично


 
Vlad Oshin ©   (2007-03-26 14:10) [42]

ты прав.
черт...
когда раньше пробовал [] - была ошибка в address
теперь заработало, наконец..

и изза этого блин пол-дня..
спасибо.


 
Паша 1   (2007-03-26 14:10) [43]


> там вариант просят

да? я вся жизнь координаты сувал. видимо, оно само там определяет потом... ну и фик с ним


 
Vlad Oshin ©   (2007-03-27 11:18) [44]

где парень дурит?
это..
проблема не снята - могу забрать сразу все Значения
Могу забрать сразу все Ссылки
достаточно быстро получается

А если где-то в середине нет у значения сылки?
как забрать все, значения+все остальное? (ссылки, в частности)


 
umbra ©   (2007-03-27 11:30) [45]


> как забрать все, значения+все остальное?

т.е. данные у Вас расположены примерно так:

строка1 - ИмяПартнера1+гиперссылка
строка2 - Данные партнера1+возможно гиперссылка
строка3 - спецпредложение1+гиперссылка
строки 4-х - некий набор данных, относящийся к партнеру1
строка х+1 - ИмяПартнера2+гиперссылка
и т.д

Правильно я понял?


 
Vlad Oshin ©   (2007-03-27 11:41) [46]

да, правильно

очень большой кусок данных
партнер + может быть гиперссылка, ...

надо забрать как-бы в 2 матрицы - матрица значений и СООТВЕТСТВУЮЩАЯ матрица гиперссылок


 
umbra ©   (2007-03-27 12:34) [47]

если первая строка блока всегда содержит гиперссылку, т.е. имеет вид

> строка1 - ИмяПартнера1+гиперссылка

то можно
1) взять все гиперссылки с листа (Worksheet[1].Cells.Hyperlinks)
2) отсортировать их по возрастанию свойства Hyprelinks.Item[i].Range.Row.  
  Теперь они идут в порядке следования на листе.
3) начинаем их перебирать в цикле. Определив, что текущая гиперссылка относится к первой строке блока (это можно сделать по разнице значений св-ва Hyprelinks.Item[i].Range.Row) можно проверить спецпредложение (ссылка на которое находится на третьей строке блока) и затем скопировать диапазон строк от текущей до строки Hyprelinks.Item[i + х].Range.Row - 1

х определяем исходя из того, что Item[i + х] находится далеко от текущей (скажем, дальше чем в 3 строках


 
Vlad Oshin ©   (2007-03-27 15:03) [48]

непонял


> 1) взять все гиперссылки с листа (Worksheet[1].Cells.Hyperlinks)

ага


> 2) отсортировать их по возрастанию свойства Hyprelinks.Item[i].
> Range.Row.  
>   Теперь они идут в порядке следования на листе.

ага


> 3) начинаем их перебирать в цикле.

ага
дальше не понял.

Отвлечемся, если у Вас есть время или Вам его не очень жалко.
Есть массив1, есть массив2
массивы одинаковы в размерах

элементы массив1 могут быть пусты (редко)
элементы массив2 могут быть пусты (достаточно часто)

элементы массив2 могут быть пусты, даже если соотв. элементы массив1 не пусты

Задача:
получить четкое соответствие m1[i,j]-m2[i,j]
m1[n1,m1]="aaaaaa"
m2[n1,m1]="www.microsoft.com"

m1[n2,m2]="bbbbbb"
m2[n2,m2]="www.macrosoft.com"

m1[n3,m3]="cccccc"
m2[n3,m3]=""

m1[n4,m4]=""
m2[n4,m4]=""

m1[n5,m5]="poiuyt"
m2[n5,m5]="www.qwertsoft.com"
....

что-то кроме поячеячного все равно ничего не вижу


 
Vlad Oshin ©   (2007-03-27 15:13) [49]

даже нет
не равны же массивы 1 и 2 получается

пробовать взять ячейки как вариант если в матрицу... и к каждой из них применить .value и  .hyperlinks


 
umbra ©   (2007-03-27 15:17) [50]

если начала (или концы) блоков не выделены как-то, то, конечно, - только поячеечно. Но разговор для экселя слишком абстрактный :) Вы имеете в виду, что массив1 - это имена партнеров, массив2 - соответствующие ссылки?


 
umbra ©   (2007-03-27 15:21) [51]

сколько ячеек в строке занимают доп данные?


 
umbra ©   (2007-03-27 15:23) [52]

в общем, чтобы ускорить работу с экселем надо как можно меньше обращаться к свойствам и использовать методы. При этом все очень сильно зависит от структуры данных в файле.


 
Vlad Oshin ©   (2007-03-27 15:29) [53]


> Вы имеете в виду, что массив1 - это имена партнеров, массив2
> - соответствующие ссылки?

именно


> сколько ячеек в строке занимают доп данные?

не принципиально, все равно придется брать иногда поячеячно, имхо
несколько раз поячеячно, для определения блока, потом м/б range

итого сейчас процедура(может быть) упрощена до :
есть ранж со значениями и гиперссылками, где как значения, так и гиперссылки могут быть, а точнее не быть.
задача: сопоставить значению гиперссылку
(на сейчас это дело решается в лоб, перебором)


 
umbra ©   (2007-03-27 15:57) [54]


> не принципиально,

почему же. если например, они занимают 5 столбцов, а заголовки - 3, то можно легко вычислить заголовки, поискав на листе пустые ячейки в 4-м или 5-м столбце, причем не обращаясь к каждой ячейке, а с помощью экселевского же метода Find


 
Vlad Oshin ©   (2007-03-27 16:27) [55]


> > не принципиально,
>
> почему же.

да просто утверждаю,
> все равно придется брать иногда поячеячно

задача та же

> есть ранж со значениями и гиперссылками, где как значения,
>  так и гиперссылки могут быть, а точнее не быть.

например, кусок файла
   

1608 1833 2028 2096 2372 2620
1770 2085 2352 2296 2688 3020
1557 1857 2109 2144 2612 3004
1572 1833 - 2068 2400 -
1668 1986 -2300 2228 2656 -
2091 2649 3099 2688 3380 3936
2007 2517 2931 2592 3232 3744
 
-     совсем нет ничего
-Х   Х, но ссылки нет
Х    Х и ссылка


 
umbra ©   (2007-03-27 16:36) [56]


> например, кусок файла
>    

а где же хоть один Х? :)
и сколько ячеек в строке занимает Х со ссылкой?



Страницы: 1 2 вся ветка

Текущий архив: 2007.04.22;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.062 c
11-1155836244
VoofT
2006-08-17 21:37
2007.04.22
Использование GRushControls с mmsystem


1-1172734536
Салат
2007-03-01 10:35
2007.04.22
Конвертировать IP адрес из строки в какой ни числовой тип... ;)


1-1172668844
Ш-К
2007-02-28 16:20
2007.04.22
Функция хеширования стринга.


15-1175081770
Юрий
2007-03-28 15:36
2007.04.22
Вложенные запросы SQL


2-1175495435
Dmitry_177
2007-04-02 10:30
2007.04.22
Убрать дату с поля SQL-запросом