Текущий архив: 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