powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление лишних строк
25 сообщений из 51, страница 2 из 3
Удаление лишних строк
    #37457311
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pal_bil,

основная писанина заложена в функции, а писанины остается написать SQL запрос :)
так что на счет писанины, я не совсем согласен. :)
тем более, что уже все написано ;))
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457329
pal_bil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitry,

Конечно, не смею с вами спорить.
Но видите ли, в вашем примере задействуются два листа, что мне не совсем удобно. Хотелось бы все в одном
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457357
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дим, ты всеж подумай, чтоб вместо кейса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select Case CLng(Split(Application.Version, ".")( 0 ))
    Case Is <  12 
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >=  12 
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select
оставить:
Код: plaintext
1.
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
Так быстрей. Только надо попросить кого-то, у кого стоит только одна версия офиса 7 или 10.
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457382
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pal_bilkuklp,
Не подскажете как таким же методом удалить все строки, в которых столбец G не содержит значение "ИСТИНА"? То есть "ИСТИНА" оставить, а остальное удалить
Код: plaintext
1.
2.
3.
4.
    With Me.UsedRange
            .AutoFilter  7 , "<>ИСТИНА"
        .Offset( 1 ).SpecialCells( 12 ).EntireRow.Delete
    End With
    Me.AutoFilterMode =  0 
P.C. Код R Dmitry можно переделать, чтоб выводил на тот же лист.
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457415
pal_bil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,

У меня удалились все строки.
Вы не подскажете что означают значения offset и specialcells?
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457458
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pal_bil, значит во всех строках в столбце G значение было не ИСТИНА.
offset значит сдвиг(в моем примере - чтоб не удалить первую стороку, она всегда будет видимой), specialcells(12) - только видимые ячейки.
Но в дальнейшем старайтесь пользоваться встроеной справкой. Проводить начальный курс информатики онлайн и мне неинтересно - и модераторам это не понравится.
Если что-то не понятно, или не так работает, старайтесь выкладывать пример в рамках правил. Тогда отвечающим будет легче Вас понять и помочь Вам.
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457498
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To kuklp,

Сергей привет, вот откопал специально по этому поводу

http://support.microsoft.com/kb/257819/ru

В самом низу
авторОграничения Excel
При использовании Excel в качестве источника данных связан с внутренней ограничения книги и листы Excel. Они включают, но не не более:

* Размер листа: 65536 строк и 256 столбцов
* Ячейка содержимое (текст): 32 767 символам
* Листов в книге: ограничено объемом доступной память
* Имена в книге: ограничено объемом доступной памяти


to pal_bil , для этого достаточно указать в функции вместо второго листа первый
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457507
pal_bil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,

Да, конечно. Прошу прощения за назойливость.

При удалении некоторых строк динамически меняются значения истины на ложь или обратно. Думаю из за этого всё.
Чтобы их не удалять, а просто скрывать, я поставил вместо .EntireRow.Delete - .EntireRow.Hidden = true
Но выходит ошибка "Нельзя установить свойство Hidden класса Range".
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457612
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, Дим. Ну так обрати внимание:"При использовании Excel в качестве источника данных связан с внутренней ограничения книги и листы Excel . А В 2010 какие ограничения?
Ты бы попробовал, дружище. А уж потом, с полной уверенностью, послал бы меня:-)
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457679
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pal_bil, можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    With Me.UsedRange
        For i =  2  To  8 
            .AutoFilter Field:=i, Criteria1:="=" ' Тут Ваши хотелки. 
        Next
        Set r = .Offset( 1 ).SpecialCells( 12 )
    End With
    Me.AutoFilterMode =  0 
    r.EntireRow.Delete
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457693
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp, Серега, ну я тоже не просто так утверждаю , мало того он ограничен в 8 версии объемом (в кб памяти), и проверил я это давно, правда в msdn об этом я ни где не нашел

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Public Function ADO_R_Dmitry(ByVal strSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean, ByVal version As Long)

Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object

Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
Select Case version 'CLng(Split(Application.version, ".")(0))
    Case Is =  8 
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is =  12 
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State =  1  Then Exit Function
Set rs = cn.Execute(strSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i =  0  To rs.Fields.Count -  1 
    OutputRange.Offset( 0 , i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset( 1 ,  0 )
 End If
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function
Sub zapolnim()
Range("a1:c100000").Value = Range("a1:c1").Value
strSql2 = "SELECT * FROM [Лист1$]"
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets( 2 ).[a1], False, False,  8 )
Call ADO_R_Dmitry(strSql2, ThisWorkbook.FullName, Sheets( 3 ).[a1], False, False,  12 )
End Sub
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457707
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да забыл, внеси a1:c1 чего нибудь для заполнения :)
Хотел давно тебе отписаться по этому поводу, но все руки не доходили
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457714
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дим, молчу...:-)
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457756
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
Код: plaintext
1.
Extended Properties=""Excel  8 . 0 ;MaxBufferSize= 4096 ;HDR=" & FieldName & ";IMEX= 1 "";"
еще можно увеличить буфер, но траблы тоже бывают если массив данных большой то не понятно как он их обрубает
иногда влазят и все данные, иногда нет , похоже зависит от входного объема данных,
Может кто больше работал с 8 версией с ADO подскажет какие косяки могут быть?
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457828
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
R Dmitry,
так я и работал. Только я тебе уже писал, когда. Все забыл. Сегодня раскопал свои работы 10-летней давности. Сам удивляюсь. Еще и под VB5,6 посмотрел свои ваяния. Сейчас пишу гораздо хуже, обленился, отупел. Во всем нужна сноровка, закалка, тренировка...
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457851
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, а ведь реализованный у меня недавно 11339025 вариант должен, по идее, быть независим от версии Офиса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub ODBCGetData(ByVal cnnOpen As String, ByVal rstOpen As String, ByRef oDestRange As Object)
    Dim cnn As adodb.Connection
    Set cnn = CreateObject("adodb.Connection")
    cnn.Open cnnOpen
    Dim rst As adodb.Recordset
    Set rst = CreateObject("adodb.Recordset")
    rst.Open rstOpen, cnn
    oDestRange.CopyFromRecordset rst
    rst.Close
    cnn.Close
End Sub
Использование, типа:
Код: plaintext
1.
2.
3.
    ODBCGetData _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & ActiveWorkbook.Path & "\" & Activeworkbook.Name, _
    "SELECT * FROM [" & ActiveSheet.Name & "]", _
    ActiveSheet.Cells( 2 ,  1 )
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457887
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, "независим от версии" слишком сильно. adodb, если память не изменяет, как раз во времена 2003 появилось. Но даже если с 2003 включительно - это уже хорошо. Хотя я еще тогда отказался от него в пользу ADO из-за скорости. Надо тестить.
Тогда у меня стояла Винда ME. И хрюшка тоже казалась жутко тормозной:-) А сейчас упираюсь переходить на семерку. На хрюшке комфортно и привычно, как и в офисе 2003.
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457959
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,

Не-е, и в 2000 и в XP Офисах это все было. Наоборот, с 2003 (сервера) M$ перестали отдельно выпускать MDAC.
Я же имел в виду то, что имел , как раз с точки зрения 2003-2007-2010.
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37457984
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMkuklp,

Не-е, и в 2000 и в XP Офисах это все было. Наоборот, с 2003 (сервера) M$ перестали отдельно выпускать MDAC.
Я же имел в виду то, что имел , как раз с точки зрения 2003-2007-2010.

А что тут проверять .........
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub test()
Range("a1:c100000").Value = Array( 1 ,  2 ,  3 )
   ODBCGetData _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, _
    "SELECT * FROM [" & ActiveSheet.Name & "$]", _
   Sheets( 2 ).Cells( 1 ,  1 )
   Sheets( 2 ).Activate
  MsgBox "К-во строк :  " & Cells(Rows.Count,  1 ).End(xlUp).Row
End Sub

[" & ActiveSheet.Name & "$]"
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458009
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitry,

Да, правил прямо в посте, так что просто стер и не заметил...
А, еще заметил - если использовать позднее связывание, то использовать
Код: plaintext
1.
    Dim cnn As Object
    Dim rst As Object
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458024
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Обидно, что все драйвера старых версий ограничены в объеме обрабатываемых данных :(
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458090
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это как сказать...
Вернее, тут сказать можно только одно - инструмент выбран неправильно. Если объемы данных возросли - так надо подбирать соответствующий инструмент. Электронные таблицы -> настольные СУБД -> клиент-серверные приложения.
Все только упирается либо в вышестоящих (по определению - знающих меньше), либо в юзеров (по определению - не желающих переучиваться). С другой стороны, если разработчик - альтруист, то он может и перепишет приложение так, что никто и не заметит, что теперь данные уже крутятся на SQL-сервере
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458112
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

целиком и полностью согласен. Просто ёксель очень универсален и удобен, вот народ и пытается сделать из него и БД и Report,
Даже у себя на работе поражаюсь иногда таким вещам. То у меня у гл.бх так 12 файлов в год листов по 30 , пытался ей как то мозг вправить..... увы бесполезно :((
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458126
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так тогда переход к формам ввода, ADO в выборках, использованию, скажем, Word в качестве выходных отчетов - и приложение на Excel потом с минимальными проблемами переносится на следующий уровень...
...
Рейтинг: 0 / 0
Удаление лишних строк
    #37458175
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
пошел по другому пути, все управленческое что имеет более или менее четкую структуру данных переложил на PALO, формы ввода все на WEB (VPN + Local),подгрузка данных из Oracle + Web+ 1c с помощью ETL, вся отчетность на кубах Palo в ёксель подгружается, и там уже срезы диаграммы и т.д
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление лишних строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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