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

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

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

ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ShIvADeSt



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

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

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях 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

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:58 23-04-2007 | Исправлено: JekG, 22:32 10-01-2010
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mistx
    Конкретно под Ваши требования так:

    Код:
    Dim i As Integer, j As Integer, a(), b(), c()
        Sheets("Источник").Activate
        With Sheets("шаблон")
            a = Range([A1], Cells(Cells(Rows.Count, "A").End(xlUp).Row, "B")).Value
            b = .Range(.[A1], .Cells(.Cells(Rows.Count, "A").End(xlUp).Row, "B")).Value
        End With
        ReDim c(1 To UBound(a, 1), 1 To 1)
        For i = 1 To UBound(a, 1)
            For j = 1 To UBound(b, 1)
                If a(i, 1) = b(j, 1) Then c(i, 1) = b(j, 2)
            Next
        Next
        Range(Cells(1, 17), Cells(UBound(c, 1), 17)).Value = c

    Обратите внимание на правильность имени листа (включая строчные/прописные и т.д.)

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 10:18 01-04-2009
    mistx

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888
    Обалдеть! Огромное спасибо!
     
    разобраться бы еще в этом.
    Здесь диапазон строк безграничен? Участвует весь столбец?
     
    и еще после выполнения скрипта удаляется заголовок 17 столбца.

    Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 13:24 01-04-2009 | Исправлено: mistx, 15:39 01-04-2009
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Неужели никто не знает
     
    Кто подскажет макрос?  
    Есть таблица, то есть Счет-фактура  
    После заполнения первой строки, при нажатии на Enter автоматически добавляется вторая строка И тд  
    То есть
    1 Колбаса копченная       нажимаем "ENTER"
    макрос в счет фактуре добавляет вторую , активную сторку
     
     
     
     
     
     
     
    Спасибо!

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 13:25 01-04-2009
    SAS888

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

    Цитата:
    разобраться бы еще в этом.
    Здесь диапазон строк безграничен? Участвует весь столбец?  

    Диапазон не ограничен. Макрос работает так: Создаем два массива. массив "a" содержит элементы столбцов "A" и "B" листа "Источник", массив "b" содержит элементы столбцов "A" и "B" листа "шаблон". Затем создаем пустой массив "c", с размерностью = массиву "a". Далее, осуществляем циклическое сравнение всех элементов первой размерности массивов "a" и "b", и при совпадении, заносим в массив "c" элемент второй размерности массива "b" с тем же индексом. Для лучшего понимания, скажем, что в первой размерности находятся значения из столбцов "A", во второй - из столбцов "B". После выхода из цикла, получим массив "c", состоящий из пустых (при несовпадении) и заполненных (при совпадении) элементов, индекы которых соответствуют индексам массива "a" (т.е. строкам листа). Теперь заносим значения массива "c" в нужный столбец. Все. Итого, при работе с листами, используем всего 3 команды: формирование массивов и вставку массива. Все остальные действия происходят в памяти компьютера. Кстати, есть ли выигрыш по времени по сравнению с кодом, предложенным Вам ранее Fierce1? Если есть, то какой?

    Цитата:
    после выполнения скрипта удаляется заголовок 17 столбца.  

    Перед последней строкой кода вставьте
    Код:
    c(1, 1) = Cells(1, 17)
    и будет счастье.
     
    Добавлено:
    maratino

    Цитата:
    Неужели никто не знает  

    Думаю, что дедо не в знаниях. Вопрос не полный.  
    Что значит "добавить строку"? У Excel-я они кончились? Нужно "растянуть" имеющиеся формулы предыдущей строки? Прорисовать границы ячеек? Все это делать при заполнении всех столбцов в строке? В каких? Что делать, если не все требуемые столбцы заполнены? Добавлять строку только при нажатии Enter, или при копировании/вставке тоже?
    Это необходимые для ответа уточняющие вопросы. Для более полного и точного ответа, наверняка у Вас есть еще ряд требований, ограничений и т.п.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 04:56 02-04-2009 | Исправлено: SAS888, 04:57 02-04-2009
    jocer

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WowGun
    window("книга1").activate не подойдет
    в том-то и дело что создается не книга 1, а каждый раз окно с новым названием которое неизвестно, но известна маска окна...

    Всего записей: 21 | Зарегистр. 13-08-2008 | Отправлено: 09:34 02-04-2009
    mistx

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888
    Человеческое спасибо за объяснение и помощь!
     
    комп(2.67ГГц,ОЗУ512мб,celeron)
    разница,полагаю, приличная
    взял на обработку 30073 строки.
    1 макрос - 4  минуты 30 секунд
    ваш макрос с массивами - 2секунды
     
    вставил  c(1, 1) = Cells(1, 17)
    сначала заработал, потом опять стал удалять
    может я че то не так сделал
     
    код:
    Sheets("Источник").Select
    Range("Q2:Q35643").Select  (этото 17 столбец листа источник) очистка столбца
    Selection.ClearContents
    Dim i As Integer, j As Integer, a(), b(), c()
        Sheets("Источник").Activate
        With Sheets("шаблон")
            a = Range([A1], Cells(Cells(Rows.Count, "A").End(xlUp).Row, "B")).Value
            b = .Range(.[A1], .Cells(.Cells(Rows.Count, "A").End(xlUp).Row, "B")).Value
        End With
        ReDim c(1 To UBound(a, 1), 1 To 1)
        For i = 1 To UBound(a, 1)
            For j = 1 To UBound(b, 1)
                If a(i, 1) = b(j, 1) Then c(i, 1) = b(j, 2)
            Next
        Next
        Range(Cells(1, 17), Cells(UBound(c, 1), 17)).Value = c
        c(1, 1) = Cells(1, 17)

    Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 11:01 02-04-2009 | Исправлено: mistx, 12:05 02-04-2009
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mistx
    1. В коде VBA без необходимости не используйте метод Select. Очистить столбец "Q" со второй строки до конца, лучше так:  

    Код:
    Range([Q2], Cells(Rows.Count, "Q")).ClearContents

    2. Себя цитировать считается неприлично, но я говорил  
    Цитата:
    Перед последней строкой кода вставьте  
    А у Вас где расположена эта строка? Суть такая, что мы вставляем в столбец "Q" массив "c", начиная с первой строки. Поэтому, чтобы заголовок не исчез, мы перед вставкой массива присвоим первому его элементу значение ячейки с заголовком. Именно это и делает добавляемая строка.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 13:52 02-04-2009
    32sasha



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

    Цитата:
    Привет, помоготе пожалуйста!
         Если используется первый ResSQL то данные достаю(на фирме аутентификация Windows)
    А если второе подключение (в данный момент закоментировано)
    1. с доменном "firma\" выдает ошибку -
    run-time error '-2147217543 (80040e4d)':
    Недоступное имя учетной записи или пароль.
    2. без домена выдает ошибку -
    run-time error '-2147217843 (80040e4d)':
    Не удаеться запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.
     
    Файл находиться в розшариной папке на сервере SP.
     
    Посмотрите пож. может синтаксис не правельный или я что-то не так делаю?
    Спасибо.
     
    Код:
    Sub Проект()
    Dim Рес, ResSQL, ПроектыВехи, f
    Dim rs As New ADODB.Recordset
     
    ResSQL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\projectsrv\sites\MS_ProjectServer_PublicDocuments\Shared Documents\01.XLS" _
    & ";Extended Properties=Excel 8.0" 'Подключение есть
     
    'ResSQL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\projectsrv\sites\MS_ProjectServer_PublicDocuments\Shared Documents\01.XLS" _
    & ";User ID=firma\Alexandr;Password=pas;Extended Properties=Excel 8.0" 'Нет подключения
     
    Рес = "SELECT * FROM [RESERVED_DATA1$]"
     
    rs.Open Рес, ResSQL, adOpenStatic
    While (Not rs.EOF)
    ПроектыВехи = rs.GetString(adClipString)
    Wend
    rs.Close
     
    End Sub  

    Народ помогите, может мысли у кого-то каието есть? А!

    Всего записей: 67 | Зарегистр. 05-01-2006 | Отправлено: 15:18 02-04-2009
    mistx

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

    Цитата:
    А у Вас где расположена эта строка?

     
    понятно. у меня эта строка находилась предпоследней. Последняя была End Sub.
    теперь ясно стало. поставил перед Range(Cells(1, 17), Cells(UBound(c, 1), 17)).Value = c  
    все теперь -ок.

    Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 15:19 02-04-2009
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888 Спасибо за внимание!
    Я отметил, что речь идет про счет-фактура
    Смотрите! Есть счет-фактура Начинается с РЕКВИЗИТЫ Далее, под реквизиты, колонки,
    столбцы A(Наименование) B (штук) и тдC D E
    потом сторка (и), где заносим информацию о товаре) а внизу, информация РУКОВОДИТЕЛЬ, ГЛАВ БУХ и тд
     
     
    между ((РЕКВИЗИТЫ)) и ((РУКОВОДИТЕЛЬ, ГЛАВ БУХ и тд)) рабочая область  
    Столбцы (колонки) На пример, есего одна строка A9)В9)C9)D9)E9)F9)G9).....
    Заполняем: (А9(колбаса) (В9(копченная) (С9(цена) и при нажатие ENTER добавляется
    новая строка, передвигая РУКОВОДИТЕЛЬ, ГЛАВ БУХ и тд вниз
    Спасибо!
     
    Добавлено:
    SAS888
    Еще вопрос такой
    Есть записанный макрос Как переписать код, чтобы он работал с указанной (активной) ячейки?
    Еще раз спасибо за внимание!

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 15:21 02-04-2009
    SAS888

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

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 07:17 03-04-2009
    emon

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день! Нужна помощь.  
     
    Необходимо выделить первые десять строк отфильтрованного диапазона. Знаю как выделить весь  диапазон, а как первые 10 строк не знаю. Подскажите, пожалуйста  
     
    ActiveWorkbook.Worksheets("AEB").Range("A:AA").AutoFilter Field:=2, Criteria1:="Moscow"
     
        Sheets("AEB").AutoFilter.Sort.SortFields.Clear
        Sheets("AEB").AutoFilter.Sort.SortFields.Add Key:=Range _
            ("AA:AA"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
            xlSortNormal
        With Sheets("AEB").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
         
        ActiveSheet.AutoFilter.Range.Offset(1, 0).Resize(ActiveSheet.AutoFilter.Range.Rows.Count - 1, _
            ActiveSheet.AutoFilter.Range.Columns.Count).SpecialCells(xlCellTypeVisible).Select

    Всего записей: 1 | Зарегистр. 13-10-2005 | Отправлено: 11:06 03-04-2009
    Fierce1



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

    Код:
     
    Private Sub Worksheet_Activate()
    Application.OnKey "~", "Enter1_Sub"
    Application.OnKey "{ENTER}", "Enter2_Sub"
    End Sub
     

     
    А этот в модуль

    Код:
     
    Sub Enter1_Sub()
    Dim i As Long
    i = Range("A1").End(xlDown).Row + 1
    Rows(i).Insert Shift:=xlUp
    End Sub
     
    Sub Enter2_Sub()
    Dim i As Long
    i = Range("A1").End(xlDown).Row + 1
    Rows(i).Insert Shift:=xlUp
    End Sub
     
     

     
    Отлавливание Enter начинаеться при активации листа

    Всего записей: 70 | Зарегистр. 08-01-2006 | Отправлено: 02:24 05-04-2009 | Исправлено: Fierce1, 02:31 05-04-2009
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fierce1 Спасибо за отзыв!
    Но что то не работает. Может я не так делаю

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 14:51 06-04-2009
    Grif91



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый вечер, помогите пожалуйста!
     
    Необходимо найти количество нулевых элементов в каждой строке матрицы 2 на 5!!!
    Подскажите как правильно прописать это в программу
     
     
    Dim a(1 To 2, 1 To 5) As Single
    Dim s As Integer
    Dim i, j As Integer
    For i = 1 To 2
    For j = 1 To 5
    a(i, j) = Val(InputBox(                      )
    Next j
    Next i
    s = 0

    Всего записей: 11 | Зарегистр. 09-08-2008 | Отправлено: 20:39 06-04-2009
    Fierce1



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

    Всего записей: 70 | Зарегистр. 08-01-2006 | Отправлено: 21:42 06-04-2009
    SAS888

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

    Код:
    Dim a(1 To 2, 1 To 5) As Single, s As Integer, i As Integer, j As Integer, b()
        For i = 1 To 2
            For j = 1 To 5
                a(i, j) = Val(InputBox("Введите a(" & i & ", " & j & ")"))
            Next
        Next
        s = 0 ' Это то, что будем искать.
         
        ReDim b(1 To UBound(a, 1))
        For i = 1 To UBound(a, 1)
            b(i) = 0
            For j = 1 To UBound(a, 2)
                If a(i, j) = s Then b(i) = b(i) + 1
            Next
        Next

    После выполнения этого кода, каждый элемент одномерного массива "b", с размерностью равной количеству строк матрицы, будет содержать количество значений "s" (в примере s = 0).
    P.S. Обратите внимание на то, как правильно объявлять переменные. В Вашем случае, переменная i будет иметь тип Variant.

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 07:52 07-04-2009 | Исправлено: SAS888, 07:57 07-04-2009
    Murder302



    Adguard
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Помогите, пожалста, переделать скрипт для вывода списка каталогов, чтобы выводились подкаталоги(на 3 уровня в глубь). Музыка рассортирована так: D:\Music\[Стиль]\[Исполнитель]\[Год - Альбом].
    Хочется добиться вывода в таком виде
    Accept                 1986 - Russian Roulette
    Axel Rudi Pell       2007 - Diamonds Unlocked
    Chrome Division   2006 - Doomsday Rock'n'Roll
    Chrome Division   2008 - Booze, Broads and Beelzebub
    Deep Purple         1968 - The Book Of Taliesyn
    Chrome Division   1993 - Come Hell Or High Water
    Def Leppard         2008 - Songs From The Sparkle Lounge
    Gone Jackals        1995 - Bone to Pick
     
    Исходный вариант(автора не знаю)
    http://elv1s.ifolder.ru/11478205

    Всего записей: 3251 | Зарегистр. 28-06-2006 | Отправлено: 18:48 07-04-2009 | Исправлено: Murder302, 19:33 07-04-2009
    soulthiefer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем здравствуйте !
    оч прошу помоч мне т к сам не настолько знаю VBA ( только самое простое ( )  
    нужен такой скрипт :
    есть 4 колонки с 10-значными числами. в каждой по 30 тыс строк минимум .
    нужно сравнить между собой все колонки на совпадение 1 с 2,3,4 ; 2-ю с 1,3,4, ; 3-ю с 1,2,4 и т д и допустим в 5-й колонке выводить число которое совпало , в 6-й колонке - через запятую в каких колонках совпало и в 7-й - сколько совпадений соответственно по колонкам тоже через запятую  
     
    форму вывода данных можно варьировать чтоб удобней было , но смысл должен остаться такой !  
    оч прошу помощи так как мне не осилить такой скрипт вообще ((  
     
    Заранее спасибо!!!

    Всего записей: 40 | Зарегистр. 11-07-2006 | Отправлено: 10:10 08-04-2009
    reanews1



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    (Видимо не правильно создал тему, перенес сюда)
    Долго (примерно неделю) листал инет, но так и не нашел готового варианта, поскольку сам сильно не дотягиваю до уровня написания того что надо. Помогите!!! Имеем 2 списка в которых имена строк частично совпадают. в диапазоне (лист1 А1:А8500 лист2 A1:A4600) на втором листе напротив каждой строки есть значение которое необходимо присвоить такой же строке, при абсолютном совпадении, в первом листе, привожу простой пример:  
     
    лист1:                            
       А         В        С              
    яблоко                          
    груша                          
    дыня                          
    персик  
    ананас  
    слива  
     
    Лист2:  
     
     А        В  
     
    груша    44  
    персик  33  
    вишня   8  
     
    и есть один ньюанс необходимо в процессе работы создать еще 2 листа, т.е. Лист3 и лист 4 в который будут переноситься те строки которые остались уникальны в первых 2х листах, только обязательно целые строки т.к. в первой таблице после пустого столбца "В" далее продолжаются строки данных,  т.е. опять пример для понятности происходящего:  
     
    лист3            
                               
       А                В                                
     
    Вишня       8                                  
                                                   
                                                   
     
     Лист 4  
     
    А                     В                 С                D  
     
    Яблоко  
    Ананас  
    Слива  
    Надеюсь смог понятно донести проблемму.

    Всего записей: 3 | Зарегистр. 28-12-2007 | Отправлено: 19:26 09-04-2009
       

    Страницы: 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

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)
    ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru