|
Неверно считывается количество строк в Excel | ☑ | ||
---|---|---|---|---|
0
миша122062
05.05.12
✎
14:24
|
Читаю количество сток на странице
КолСтрок = НашФайл.Sheets.Item(ИмяЛиста).UsedRange.Rows.Count(); Выдает 5 - а строк то 6!!!!! Кто в теме - что за шняга? |
|||
1
Жан Пердежон
05.05.12
✎
14:27
|
ошибся значит
|
|||
2
dka80
05.05.12
✎
14:37
|
а в самом экселе vba сколько выдает?
|
|||
3
миша122062
05.05.12
✎
14:37
|
(1)нет! в файле 6 строк! Проверено!
|
|||
4
aleks-id
05.05.12
✎
14:38
|
да прибудут с вами корявые руки ибо читать таким макаром уже не модно
|
|||
5
миша122062
05.05.12
✎
14:38
|
(4)а как - просвятите о новых направлениях!
|
|||
6
Alex S D
05.05.12
✎
14:40
|
методом эвристического анализа надо..
|
|||
7
миша122062
05.05.12
✎
14:44
|
кто может без флуда реально сказать как определить точно количество строк в файле
|
|||
8
КМ155
05.05.12
✎
14:45
|
(7) могут многие, но тебе помощь не светит
|
|||
9
Irek-kazan
05.05.12
✎
14:46
|
вариант 1 - посчитать кол-во непустых строк в цикле
|
|||
10
Irek-kazan
05.05.12
✎
14:47
|
и уверен что тот на том листе читаешь?
|
|||
11
Boroda
05.05.12
✎
14:48
|
В начале листа есть совершенно пустые строки?
|
|||
12
Boroda
05.05.12
✎
14:50
|
для сч=1 по 99999
если счПодрядПпустыхСтрок>10 Тогда Прервать; |
|||
13
Alex S D
05.05.12
✎
14:51
|
я не заморачиваюсь вообще, юзер вводит загрузить строки с .. и по.. че мудрить
|
|||
14
Irek-kazan
05.05.12
✎
14:52
|
(13) можно вообще не грузить, пусть распечатывает и ручками забивает
|
|||
15
Alex S D
05.05.12
✎
14:53
|
(14) в моем случае иначе никак, формат файлов для загрузки сумашедший
|
|||
16
Irek-kazan
05.05.12
✎
14:54
|
давайте напрягем мозг, хоть это и сложно, и спросим ТС зачем ему кол-во строк?
|
|||
17
Irek-kazan
05.05.12
✎
14:55
|
iRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
|
|||
18
Alex S D
05.05.12
✎
14:55
|
пусть сам скажет, напрягаться еще..
|
|||
19
миша122062
05.05.12
✎
14:57
|
(8)ты просто долбак, как в нашем городе говорят. И твои посты подтверждают - нифига не умеешь крому флуда.
|
|||
20
Eugene_life
05.05.12
✎
14:58
|
(19) Если в книге будет объединение ячеек - твой метод ошибется 100%. Надежнее всего - перебирать по строкам, и останавливаться когда пошли пустые
|
|||
21
миша122062
05.05.12
✎
14:58
|
(16)загрузка данных из файла произвольного формата
|
|||
22
Alex S D
05.05.12
✎
14:58
|
(20) ну я сразу предлагал - (6)
|
|||
23
миша122062
05.05.12
✎
14:58
|
(20)да уже думал об этом
|
|||
24
Alex S D
05.05.12
✎
14:59
|
(20) окей.. гденить в середине пустая строка.. че делать будем?
|
|||
25
Irek-kazan
05.05.12
✎
15:01
|
(24) цикл от 1 до 65536
|
|||
26
Alex S D
05.05.12
✎
15:02
|
(25) каждый раз читать 65 тыщ строк? а ты знаешь что там может и лям строк быть?
|
|||
27
Irek-kazan
05.05.12
✎
15:02
|
(26) это была шутка :)
|
|||
28
миша122062
05.05.12
✎
15:05
|
Решил так. Кому может интересно - в инете нарыл
Лист = НашФайл.Sheets.Item(ИмяЛиста); КолСтрок = Лист.Cells(1,1).SpecialCells(11).Row; |
|||
29
Irek-kazan
05.05.12
✎
15:05
|
ActiveCell.SpecialCells(xlLastCell).Row
|
|||
30
Alex S D
05.05.12
✎
15:06
|
(28) на счет этого метода пишут:
КолС=Лист.UsedRange.SpecialCells(11).Row; Действительно не надежно! Пример: таблица из 8 строк, но если кто-нибудь из юзверей просто ткнется на любую ячейку скажем в 300 строке, то количество строк опять будет 65 тык с гаком. По своему опыту согласен с Херрес "Единственный надёжный способ - бежать по ячейкам и эмпирически искать пустое место", правда ющу не пустое место определунный символ или набор в первой ячейке последненей строки. |
|||
31
Irek-kazan
05.05.12
✎
15:08
|
Данный метод не требует указания номера столбца и возвращает максимальную последнюю ячейку(строку — Row либо столбец — Column). Но используя данный метод следует помнить, что не всегда можно получить реальную последнюю заполненную ячейку. Если Вы где-то ниже занесете данные и сразу удалите их из таблицы, а затем примените такой метод, то lLastRow будет равна значению строки, из которой Вы только что удалили значения. Другими словами требует обязательного обновления данных, а этого можно добиться только сохранив и закрыв документ и открыв его снова. Так же, если какая-либо ячейка содержит форматирование(например, заливку), но не содержит никаких значений, то она тоже будет засчитана.
|
|||
32
миша122062
05.05.12
✎
15:10
|
(30)протестил на 8 зашоренных-косячных файлах Экселя. Работает так:
КолСтрок1 = НашФайл.Sheets.Item(ИмяЛиста).UsedRange.Rows.Count();// Количество строк КолСтрок2 = Лист.Cells(1,1).SpecialCells(11).Row;// Количество строк - вариант 2 КолСтрок = Макс(КолСтрок1, КолСтрок2);// Берем тот что больше |
|||
33
Eugene_life
05.05.12
✎
15:11
|
(24) Я обычно читаю в ТЗ, потому если попалась пустая строка - то продолжаю считывать.. Если 10 подряд пустых строк - то значит конец данных. Пустые строки из ТЗ удаляю.
|
|||
34
миша122062
05.05.12
✎
15:12
|
(33) тоже вариант - мучительно выбираю между ним и (32)
|
|||
35
Eugene_life
05.05.12
✎
15:14
|
(34) Ты смотри по возможным последствиям. Самое страшное - если кто-то в строке 64001 поставит крестик. Что тогда будет? Если анализ того, что загрузилось?
|
|||
36
Alex S D
05.05.12
✎
15:15
|
(32) спс, учту)
|
|||
37
Irek-kazan
05.05.12
✎
15:23
|
(35) пересохранить в csv
|
|||
38
МихаилМ
05.05.12
✎
15:35
|
||||
39
Alex S D
05.05.12
✎
15:37
|
(38) тут собственно все уже обсуждали
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |