Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Найти одинаковые строки в разных книгах и перенести формат - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти одинаковые строки в разных книгах и перенести формат (Макросы/Sub)
Найти одинаковые строки в разных книгах и перенести формат
drugojandrew Дата: Воскресенье, 06.09.2015, 17:21 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Нигде не могу найти решения подобной задачи.
Имеется книга с данными, большинство из коотрых отредактированы (отформатированы тем или иным образом). И есть другая книга, в которой те же данные, только после некоторой коррекции в исходной программе (откуда через txt файл выгружаются эти данные и переносятся в эксель). Там что-то было добавлено, что-то удалено, но большинство одинаково. Нужно сравнить строки в этих книгах и при полностью идентичных первых 5-ти ячейках строки перенести формат (у меня это выделение цветом, добавление даты и значения в последних ячейках строки) из строк первой книги в строки второй. Неплохо было бы еще выделить новые строки.
Подобную процедуру выполнять приходится последнее время часто, и иногда число строк достигает нескольких тысяч, но пока не нашел решения для автоматизации процесса.
К сообщению приложен файл: 5962714.zip (15.8 Kb)
 
Ответить
СообщениеЗдравствуйте.
Нигде не могу найти решения подобной задачи.
Имеется книга с данными, большинство из коотрых отредактированы (отформатированы тем или иным образом). И есть другая книга, в которой те же данные, только после некоторой коррекции в исходной программе (откуда через txt файл выгружаются эти данные и переносятся в эксель). Там что-то было добавлено, что-то удалено, но большинство одинаково. Нужно сравнить строки в этих книгах и при полностью идентичных первых 5-ти ячейках строки перенести формат (у меня это выделение цветом, добавление даты и значения в последних ячейках строки) из строк первой книги в строки второй. Неплохо было бы еще выделить новые строки.
Подобную процедуру выполнять приходится последнее время часто, и иногда число строк достигает нескольких тысяч, но пока не нашел решения для автоматизации процесса.

Автор - drugojandrew
Дата добавления - 06.09.2015 в 17:21
SLAVICK Дата: Понедельник, 07.09.2015, 13:38 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Попробуйте макрос:
[vba]
Код
Sub fi()
Dim m, m1, r As Range, r1 As Range, i&, ii&, n&, n1&, i1&, ii1&, s$, s1$
Dim WB As Workbook, WB1 As Workbook
Set WB = ActiveWorkbook
n = Cells(Rows.Count, 1).End(xlUp).Row: Set r = Range("a1:e" & n): m = r.Value

Set WB1 = Workbooks("С форматированием.xls")
With WB1
      n1 = .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row: Set r1 = .Sheets(1).Range("a1:e" & n1): m1 = r1.Value
End With

For i = 1 To n
      s = vbNullString
      For ii = 1 To 5: s = s & (m(i, ii)): Next
          For i1 = 1 To n1
              s1 = vbNullString
              For ii1 = 1 To 5: s1 = s1 & (m1(i1, ii1)): Next
              If s1 = s Then
                  With r1: Range(.Cells(i1, 1), .Cells(i1, 5)).Copy: End With
                  With r: Range(.Cells(i, 1), .Cells(i, 5)).PasteSpecial xlPasteFormats: End With
                  Exit For
              End If
          Next
Next
End Sub
[/vba]

Запускать из новой книги. Оба файла должны быть открыты. :D
К сообщению приложен файл: Desktop.zip (26.7 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 07.09.2015, 13:41
 
Ответить
СообщениеПопробуйте макрос:
[vba]
Код
Sub fi()
Dim m, m1, r As Range, r1 As Range, i&, ii&, n&, n1&, i1&, ii1&, s$, s1$
Dim WB As Workbook, WB1 As Workbook
Set WB = ActiveWorkbook
n = Cells(Rows.Count, 1).End(xlUp).Row: Set r = Range("a1:e" & n): m = r.Value

Set WB1 = Workbooks("С форматированием.xls")
With WB1
      n1 = .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row: Set r1 = .Sheets(1).Range("a1:e" & n1): m1 = r1.Value
End With

For i = 1 To n
      s = vbNullString
      For ii = 1 To 5: s = s & (m(i, ii)): Next
          For i1 = 1 To n1
              s1 = vbNullString
              For ii1 = 1 To 5: s1 = s1 & (m1(i1, ii1)): Next
              If s1 = s Then
                  With r1: Range(.Cells(i1, 1), .Cells(i1, 5)).Copy: End With
                  With r: Range(.Cells(i, 1), .Cells(i, 5)).PasteSpecial xlPasteFormats: End With
                  Exit For
              End If
          Next
Next
End Sub
[/vba]

Запускать из новой книги. Оба файла должны быть открыты. :D

Автор - SLAVICK
Дата добавления - 07.09.2015 в 13:38
drugojandrew Дата: Вторник, 08.09.2015, 12:12 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
SLAVICK, спасибо! Это то что надо. Как бы теперь еще скопировать ячейки "F" и "G" при одинаковых первых пяти ячейках строки. Понимаю что примерно то же самое, только добавить копирование, но в VBA пока не силен (только- только начинаю что-то делать) и у самого реализовать не получается. Можете помочь с этим?
[moder]Это уже другой вопрос, значит, другая тема[/moder]


Сообщение отредактировал Pelena - Вторник, 08.09.2015, 12:20
 
Ответить
СообщениеSLAVICK, спасибо! Это то что надо. Как бы теперь еще скопировать ячейки "F" и "G" при одинаковых первых пяти ячейках строки. Понимаю что примерно то же самое, только добавить копирование, но в VBA пока не силен (только- только начинаю что-то делать) и у самого реализовать не получается. Можете помочь с этим?
[moder]Это уже другой вопрос, значит, другая тема[/moder]

Автор - drugojandrew
Дата добавления - 08.09.2015 в 12:12
SLAVICK Дата: Вторник, 08.09.2015, 12:29 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Поменял в коде всего 4-е символа :D
[vba]
Код
Option Explicit

Sub fi()
Dim m, m1, r As Range, r1 As Range, i&, ii&, n&, n1&, i1&, ii1&, s$, s1$
Dim WB As Workbook, WB1 As Workbook
Set WB = ActiveWorkbook
n = Cells(Rows.Count, 1).End(xlUp).Row: Set r = Range("a1:g" & n): m = r.Value

Set WB1 = Workbooks("С форматированием.xls")
With WB1
      n1 = .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row: Set r1 = .Sheets(1).Range("a1:g" & n1): m1 = r1.Value
End With

For i = 1 To n
      s = vbNullString
      For ii = 1 To 5: s = s & (m(i, ii)): Next
          For i1 = 1 To n1
              s1 = vbNullString
              For ii1 = 1 To 5: s1 = s1 & (m1(i1, ii1)): Next
              If s1 = s Then
                  With r1: Range(.Cells(i1, 1), .Cells(i1, 7)).Copy: End With
                  With r: Range(.Cells(i, 1), .Cells(i, 7)).PasteSpecial xlPasteFormats: End With
                  Exit For
              End If
          Next
Next
End Sub
[/vba]

Это уже другой вопрос,

По моему это в рамках темы - просто ТС сразу не указал диапазоны, формат которых он хочет перенести :)
Нужно сравнить строки в этих книгах и при полностью идентичных первых 5-ти ячейках строки перенести формат .... из строк первой книги в строки второй.
К сообщению приложен файл: __.zip (26.3 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 08.09.2015, 12:33
 
Ответить
СообщениеПоменял в коде всего 4-е символа :D
[vba]
Код
Option Explicit

Sub fi()
Dim m, m1, r As Range, r1 As Range, i&, ii&, n&, n1&, i1&, ii1&, s$, s1$
Dim WB As Workbook, WB1 As Workbook
Set WB = ActiveWorkbook
n = Cells(Rows.Count, 1).End(xlUp).Row: Set r = Range("a1:g" & n): m = r.Value

Set WB1 = Workbooks("С форматированием.xls")
With WB1
      n1 = .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row: Set r1 = .Sheets(1).Range("a1:g" & n1): m1 = r1.Value
End With

For i = 1 To n
      s = vbNullString
      For ii = 1 To 5: s = s & (m(i, ii)): Next
          For i1 = 1 To n1
              s1 = vbNullString
              For ii1 = 1 To 5: s1 = s1 & (m1(i1, ii1)): Next
              If s1 = s Then
                  With r1: Range(.Cells(i1, 1), .Cells(i1, 7)).Copy: End With
                  With r: Range(.Cells(i, 1), .Cells(i, 7)).PasteSpecial xlPasteFormats: End With
                  Exit For
              End If
          Next
Next
End Sub
[/vba]

Это уже другой вопрос,

По моему это в рамках темы - просто ТС сразу не указал диапазоны, формат которых он хочет перенести :)
Нужно сравнить строки в этих книгах и при полностью идентичных первых 5-ти ячейках строки перенести формат .... из строк первой книги в строки второй.

Автор - SLAVICK
Дата добавления - 08.09.2015 в 12:29
drugojandrew Дата: Вторник, 08.09.2015, 16:00 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, SLAVICK прав. Может я как-то неточно выразился. У меня написано так:
... перенести формат (у меня это выделение цветом, добавление даты и значения в последних ячейках строки)
Этим я хотел сказать, что в новый файл нужно скопировать форматирование уже имеющихся а так же добавленных в строку ячеек, и ещё значения в них (добавленных ячейках) содержащиеся.
 
Ответить
СообщениеPelena, SLAVICK прав. Может я как-то неточно выразился. У меня написано так:
... перенести формат (у меня это выделение цветом, добавление даты и значения в последних ячейках строки)
Этим я хотел сказать, что в новый файл нужно скопировать форматирование уже имеющихся а так же добавленных в строку ячеек, и ещё значения в них (добавленных ячейках) содержащиеся.

Автор - drugojandrew
Дата добавления - 08.09.2015 в 16:00
drugojandrew Дата: Вторник, 08.09.2015, 16:04 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
SLAVICK, спасибо еще раз, но я имел ввиду, что нужно не только формат ячеек "F" и "G" скопировать, но и их значения.
 
Ответить
СообщениеSLAVICK, спасибо еще раз, но я имел ввиду, что нужно не только формат ячеек "F" и "G" скопировать, но и их значения.

Автор - drugojandrew
Дата добавления - 08.09.2015 в 16:04
Pelena Дата: Вторник, 08.09.2015, 16:07 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
нужно не только формат ячеек "F" и "G" скопировать, но и их значения

Это я и мела в виду, что "перенести формат" (как обозначено в теме) и "скопировать значения" - это не одно и то же


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
нужно не только формат ячеек "F" и "G" скопировать, но и их значения

Это я и мела в виду, что "перенести формат" (как обозначено в теме) и "скопировать значения" - это не одно и то же

Автор - Pelena
Дата добавления - 08.09.2015 в 16:07
SLAVICK Дата: Вторник, 08.09.2015, 16:24 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
и "скопировать значения" - это не одно и то же

Ну да - это я недопонял - согласен, что это другой вопрос.
Я сделал только формат... поиск и подстановка значений = другая тема beer
Но забегая наперед скажу: drugojandrew, для этого в код нужно добавить всего две строки, или поменять существующую одну :D - можете попробовать самостоятельно ^_^


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 08.09.2015, 16:27
 
Ответить
Сообщение
и "скопировать значения" - это не одно и то же

Ну да - это я недопонял - согласен, что это другой вопрос.
Я сделал только формат... поиск и подстановка значений = другая тема beer
Но забегая наперед скажу: drugojandrew, для этого в код нужно добавить всего две строки, или поменять существующую одну :D - можете попробовать самостоятельно ^_^

Автор - SLAVICK
Дата добавления - 08.09.2015 в 16:24
drugojandrew Дата: Вторник, 08.09.2015, 16:28 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, понял, исправлюсь.
SLAVICK, спасибо, попробую. Надеюсь получится)
 
Ответить
СообщениеPelena, понял, исправлюсь.
SLAVICK, спасибо, попробую. Надеюсь получится)

Автор - drugojandrew
Дата добавления - 08.09.2015 в 16:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти одинаковые строки в разных книгах и перенести формат (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!