Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1, Часть 2
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References
     
    Перечень основных ColorIndex'ов из MSDN
     

    Смежные темы:
    Программы » Microsoft Office 2019 & 365 | 2016 | 2013 | 2010 | 2007 | 2003
    Программы » OneNote | Outlook 2013 & 2016 & 2019 | Outlook 2010 | Microsoft Mathematics & Math Solver
    Программы » Word FAQ | Excel FAQ | Access FAQ
    Прикладное программирование » Word VBA | Access VBA  
    Андеграунд » Microsoft Office 2019 | 2016 | 2013 | 2010 | 2007 | 2003
    Андеграунд » OneNote | Visio | SharePoint Server | Project Server | Exchange Server
    Андеграунд » Надстройки (add-ins) и коммерческие макросы Excel
    Андеграунд » Самостоятельная сборка дистрибутивов Оffice 2007/2010/2013/2016 | MUI для Office 2007

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:16 11-01-2010 | Исправлено: ALeXkRU, 16:42 03-08-2021
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Подскажите, пожалуйста, как решить такую задачку  

    Пример бы... А так не понятно, увы

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 09:44 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток.
    Создал тему, но меня сюда направили...
    Необходимо запустить весьма простой, но при этом видимо тяжелый цикл в Excel для обработки большого колличества строк. Общее число строк примерно 1 000 000, но мы уже разбили их по листам, в каждом листе 30000 - 30001 строк.  
     
    В общем сама проблема с циклом:  
    Цикл не проверяет все имеющиеся строки на листе. Складывается ощущение что существует какое то ограничение. Хотя тесты показали, что цикл свободно осиливает 150000 интераций (если не правильно слово написал, не сердчайте).  
     
    Цикл обрабатывает две строки по определенным столцам. Если они совпадают, он их копирует в другую книгу и удаляет. Если нет, идет на следующую строку.  
     
    Dim j As Long  
    Dim i As Long  
    Dim k As Long  
    Dim bookName As String  
     
    'Настройка скрипта  
    bookName = "Уникальные.xlsx"  
    i = Workbooks(bookName).Sheets(1).UsedRange.Row + Workbooks(bookName).Sheets(1).UsedRange.Rows.Count  
    j = 1  
     
    ' Сам цикл  
     
    Do While Not ActiveWorkbook.Worksheets(1).Cells(j, 5).Value = Empty  
     
     'Проверка двух строк  
    If (Cells(j, 5).Value = Cells(j + 1, 5).Value) And _  
    (Cells(j, 6).Value = Cells(j + 1, 6).Value) And _  
    (Cells(j, 7).Value = Cells(j + 1, 7).Value) And _  
    (Cells(j, 8).Value = Cells(j + 1, 8).Value) Then  
     
    ActiveWorkbook.ActiveSheet.Rows(j).Copy Destination:=Workbooks(bookName).Sheets(1).Rows(i)  
    ActiveWorkbook.ActiveSheet.Rows(j+1).Copy Destination:=Workbooks(bookName).Sheets(1).Rows(i+1)  
    Rows(j+1).Delete  
    Rows(j).Delete  
    i = i + 2  
     
    'Уникальную строку пропускаем  
     
    Else  
     
    j = j + 1  
     
    End If  
             
    Loop  
     
    Первый раз писал скрипт не я, так что скорее всего в этот раз буду использовать Do Untile.  
     
    Цикл не хочет проверять все строки. Выполняется около 10000 раз. Копирует из книги нужные строки но не по всей книге. Возможно проверку окончания цикла не правильно сформулировали? 5 столбец не может быть пуст, это фамилия.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 09:50 19-09-2011
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Quieteroks
    Могу предложить вариант, который будет работать в десятки (сотни) раз быстрее, при условии, что будет пример исходного файла. Не обязательно такого большого, достаточно несколько строк.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 10:23 19-09-2011 | Исправлено: SAS888, 10:24 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SAS888
    Сейчас выложу. Только данные "затру" частично. Все же секретность...
    http://rghost.ru/22170771
    http://rghost.ru/download/22170771/216775fb18b1ca264b87db7d519714f46de25264/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80.xlsx
     
    Искать дубликаты необходимо по Фамилии, Имени, Отчеству и дате рождения. Т.е. 5,6,7,8 поле.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 10:25 19-09-2011 | Исправлено: Quieteroks, 10:37 19-09-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Цикл не хочет проверять все строки. Выполняется около 10000 раз.  

    После удаления нумерация строк меняется, а в программе - сквозная. Надо идти с конца.  
     
    А еще лучше - в два этапа. Вначале ставить метки на удаление, а потом уже по этим меткам удалять-переносить. И странно - подразумевается, что будет не больше одного повтора. Вообще-то, эта задача под Access - не надо разбивать на листы и запросом можно обойтись. Да и странно - 30000. В 2003 было ограничение 65, а потом уже и весь лимон.

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 10:56 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    После удаления нумерация строк меняется, а в программе - сквозная. Надо идти с конца.

     
    По логике, удаляя строку, предыдущая должна занять ее место. Мы ее не скрываем ведь. Поэтому и не увеличиваем показатель номера строки для проверки.
     

    Цитата:
    И странно - подразумевается, что будет не больше одного повтора.

     
    Почему не должно быть более одного повтора? Может Вы что то просмотрели в коде?
     

    Цитата:
    В 2003 было ограничение 65, а потом уже и весь лимон.

     
    Ограничение действительно 65000 строк, но файл импортировался из другой программы и он позволил в одном листе заполнить более. После первого запуска, решили что скрипт не обрабатывает всю книгу именно из-за ограничений строк и поделили его.
     

    Цитата:
    Вообще-то, эта задача под Access - не надо разбивать на листы и запросом можно обойтись.

     
    Может быть и проще Access использовать... Но итог все равно нужно будет переносить в Excel. Поэтому решили не заморачиваться.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 11:12 19-09-2011
    aidomars



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Quieteroks
    А не пробовали посмотреть в точке останова цикла значения переменных? На какой строке останавливается и т.д.?

    Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 11:30 19-09-2011 | Исправлено: aidomars, 06:03 20-03-2012
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Для решения данной задачи, работать с ячейками (строками) рабочего листа непосредственно - это очень медленно. С использованием массивов, все гораздо быстрее. Например, так:

    Код:
    Sub Main()
        Dim i As Long, j As Long, bi As Long, ci As Long, temp As String
        Dim x As New Collection, a(), b(), c()
        Application.ScreenUpdating = False: a = ActiveSheet.UsedRange.Value
        bi = 0: ci = 0: ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2)): c = b
        For i = 1 To UBound(a, 1)
            temp = a(i, 5) & a(i, 6) & a(i, 7) & a(i, 8)
            On Error Resume Next: x.Add temp, temp
            If Err = 0 Then
                bi = bi + 1
                For j = 1 To UBound(a, 2): b(bi, j) = a(i, j): Next
            Else
                ci = ci + 1
                For j = 1 To UBound(a, 2): c(ci, j) = a(i, j): Next
                On Error GoTo 0
            End If
        Next
        With ThisWorkbook.ActiveSheet
            .UsedRange.Value = c: Workbooks.Add xlWBATWorksheet
            .Range(.[A1], .Cells(1, UBound(a, 2))).Copy
            [A1].PasteSpecial Paste:=xlPasteColumnWidths
        End With
        ActiveSheet.Name = "Уникальные": [A1].Resize(UBound(a, 1), UBound(a, 2)).Value = b
        [A1].Select: Set x = Nothing: Application.CutCopyMode = False: Application.ScreenUpdating = True
    End Sub

    Пример здесь. Откройте файл и запустите макрос "Main". Созданный макросом файл не сохраняется. Если нужно - добавьте это в код.
     
    P.S. Подразумевается, что количество используемых столбцов не менее 8. Иначе Ваше сравнение не будет иметь смысла.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 11:37 19-09-2011 | Исправлено: SAS888, 11:47 19-09-2011
    domo22

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пжлста, как в определении, что приведено ниже, сослаться не на столбец "А", а на текущий, т.е. столбец, где стоит курсор.
     
    Dim Столбец As Range: Set Столбец = Range([A1], Range("A" & Rows.Count).End(xlUp))

    Всего записей: 428 | Зарегистр. 03-04-2007 | Отправлено: 11:42 19-09-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    По логике, удаляя строку, предыдущая должна занять ее место. Мы ее не скрываем ведь. Поэтому и не увеличиваем показатель номера строки для проверки.  

    Да. Я просмотрел, что i имеет отношение к другому листу.
     

    Цитата:
    Цитата:И странно - подразумевается, что будет не больше одного повтора.  
    Почему не должно быть более одного повтора? Может Вы что то просмотрели в коде?  

    подразумевается != не должно быть  
    "Цикл обрабатывает две строки", " 'Проверка двух строк", ну и, в конце концов,  
    Rows(j+1).Delete  
    Rows(j).Delete  
     
    Если пойдут три совпадения подряд, два перенесутся, а третье останется, как уникальное. Если же четыре - две пары уберутся, если пять - etc....
     

    Цитата:
    Может быть и проще Access использовать...  

    Не проще, а правильнее. Видно же на листе, как Ексель исковеркал строковые данные, представленные, как числа и даты...
     

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 11:45 19-09-2011
    aidomars



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    domo22
    Selection.Column не подойдет?

    Всего записей: 982 | Зарегистр. 23-04-2007 | Отправлено: 11:46 19-09-2011 | Исправлено: aidomars, 16:32 30-09-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    domo22
    Set Столбец = Selection.EntireRow

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 11:50 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    А не пробовали посмотреть в точке останова цикла значения переменных? На какой строке останавливается и т.д.?

     
    Добавлял дополнительную переменную для просмотра колличества интераций. Все листы обрабатывались немного больше 10000 раз. (10375, 10297, 10286)
     
    SAS888
    Весьма странный результат выполнения скрипта.
    Он осатвил одну строчку из двух. Нужны обе.
    Жаль без комментариев. Буду разбираться.
    Можно Вас попросить пару комментариев к коду?
     
    Добавлено:

    Цитата:
    Если пойдут три совпадения подряд, два перенесутся, а третье останется, как уникальное. Если же четыре - две пары уберутся, если пять - etc....  

     
    Согласен, если задача стоит более обширная, нежели у нас. В таблице не должно быть три записи подряд. Поэтому и проверяем только две. Одна строка из нашей базы, вторая из РОФОМС.
     
    Добавлено:

    Цитата:
    P.S. Подразумевается, что количество используемых столбцов не менее 8. Иначе Ваше сравнение не будет иметь смысла.

     
    Что Вы имеете ввиду под фразой не менее 8? Структура таблицы в примере была. Проверку строк необходимо только по четырем столбцам, обусловленно тем, что остальные значения могут значительно отличяться друг от друга. Скрипт Ваш хорошо справился, хотя немного не тот результат, но думаю это можно подправить.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 11:51 19-09-2011
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Quieteroks

    Цитата:
    ...Он осатвил одну строчку из двух. Нужны обе.

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

    Цитата:
    Что Вы имеете ввиду под фразой не менее 8?

    Если исходная таблица будет заполнена менее чем на 8 столбцов, то макрос выдаст ошибку. Варианта два: либо проверять, либо соглашаться с тем, что столбцов заведомо больше (я имею ввиду заполненных). Так, или иначе, я исходил из приведенного Вами примера.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 12:00 19-09-2011 | Исправлено: SAS888, 12:09 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SAS888
     
    Возможно.
    - Макрос обрабатывает таблицу в 1000000 или разбитую на 30000 строк по листам. Есть ли ограничения в вашем макросе?
    - В таблице большинство строк уникальные. Необходимо выделить строки имеющие дубликаты и перенести в создаваемую книгу. Обе строки, для дальнейшей проверки данных вручную. Причем желательно сохранить форматирование таблицы. Желтые строки это наши даные, остальные РОФОМС.
     

    Цитата:
    Если исходная таблица будет заполнена менее чем на 8 столбцов, то макрос выдаст ошибку.

     
    Данной ошибки возникнуть не должно, таблицу вы видели, столбцов около 71. Единственное 9 столбец может иногда пустовать.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 12:15 19-09-2011
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Quieteroks

    Цитата:
    Есть ли ограничения в вашем макросе?  
    Нет.

    Цитата:
    Необходимо выделить строки имеющие дубликаты и перенести в создаваемую книгу. Обе строки, для дальнейшей проверки данных вручную. Причем желательно сохранить форматирование таблицы.
    А вот здесь, по-подробнее:
    1. Если мы обнаружили дубликаты (по контролируемым столбцам), то их нужно переносить в другую книгу не зависимо от того, совпадают ли данные в других столбцах? Так?
    2. После того, как мы перенесли эти данные в другую книгу, удалять ли их из исходной? Обе (все) совпадающие строки удалять?
    3. Что значит "выделить"? Если выделять цветом, то, во-первых, как их потом переносить? Во-вторых, это уже работа со свойствами ячеек рабочего листа, что есть не рационально и очень медленно.

    Цитата:
    ...желательно сохранить форматирование таблицы
    Это сделаем.

    Цитата:
    Желтые строки это наши даные, остальные РОФОМС.
    Правильно ли я понимаю, что один файл (новый или исходный?) должен содержать только эти две строки, а другой файл - все, кроме этих?

    Цитата:
    Единственное 9 столбец может иногда пустовать.
    Это не важно. Важно, чтобы данные начинались с 1-го столбца и последний заполненный столбец (любой строки) должен быть как минимум 8-ым.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 12:28 19-09-2011 | Исправлено: SAS888, 12:32 19-09-2011
    domo22

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aidomars
    Dim Столбец As Range: Set Столбец = Selection.Column
     выдает ошибку "object required"
     
    asbo
    Dim Столбец As Range: Set Столбец = Selection.EntireRow
    ошибки не выдает, но просто ничего не делает.
     
    Может я что-то или не туда ввожу...
     
    А, понятно, надо
    Dim Столбец As Range: Set Столбец = Selection.EntireColumn
    вот так работает. Спасибо asbo.

    Всего записей: 428 | Зарегистр. 03-04-2007 | Отправлено: 12:30 19-09-2011 | Исправлено: domo22, 12:35 19-09-2011
    Quieteroks

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SAS888
     
    1. Да, если мы нашли дубликат, обе строчки необходимо скопировать в другую книгу. Независимо от содержимого остальных строк.
    2. Желательно удалить из исходной таблице. Но если это создаст дополнительные проблемы, то можно оставить.
    3. Выделить, в смысле найти их и перенести в другую книгу, а не в смысле менять форматирование.
     

    Цитата:
    Правильно ли я понимаю, что один файл (новый или исходный?) должен содержать только эти две строки, а другой файл - все, кроме этих?

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

    Цитата:
    Это не важно. Важно, чтобы данные начинались с 1-го столбца и последний заполненный столбец (любой строки) должен быть как минимум 8-ым.

     
    Да. Начинается с первой и заканчивается на 71 столбце. Примерно, в смысле не помню номер последнего столбца.

    Всего записей: 38 | Зарегистр. 21-01-2010 | Отправлено: 12:40 19-09-2011
    asbo

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    domo22

    Цитата:
    asbo  
    Dim Столбец As Range: Set Столбец = Selection.EntireRow  
    ошибки не выдает, но просто ничего не делает.  
    Может я что-то или не туда ввожу...  
    А, понятно, надо  
    Dim Столбец As Range: Set Столбец = Selection.EntireColumn  
    вот так работает. Спасибо asbo.

    Извиняюсь... Мне тут со всех сторон голову строками заморочили. Конечно же Column :)

    Всего записей: 1805 | Зарегистр. 03-10-2006 | Отправлено: 12:49 19-09-2011 | Исправлено: asbo, 12:59 19-09-2011
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Quieteroks
    Посмотрите здесь. Если все так, как Вы хотели - напишу комментарии.
    P.S. Проверьте на большом файле.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 13:46 19-09-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 3)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru