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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнение двух диапазонов и подстановка значений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух диапазонов и подстановка значений (Макросы/Sub)
Сравнение двух диапазонов и подстановка значений
Treider01 Дата: Понедельник, 01.12.2014, 15:28 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Добрый день.

Есть два файла - book1 и book2. Написал простенький макрос чтобы сравнивало уникальные значения в столбцах B (обоих книг) и при нахождении совпадения подставляло значения из 3-го столбца book2 в третий столбец book1. Книжки в одной папке. Макрос в модуле первой книги

[vba]
Код
Sub compare()
Dim compareRange As Variant, compareRange1 As Variant, x As Variant, y As Variant

Set compareRange = Sheets("sheet1").Range("B2:B6")
Set compareRange1 = Workbooks("book2.xls").Sheets("sheet1").Range("B2:B6")

For Each x In compareRange
For Each y In compareRange1

      If x = y Then x.Offset(0, 1) = y.Offset(0, 1)

Next y
Next x

End Sub
[/vba]

Забыл добавить - ничего не происходит при выполнении макроса.
К сообщению приложен файл: Book1.xls (27.5 Kb) · Book2.xls (17.5 Kb)


Сообщение отредактировал Treider01 - Понедельник, 01.12.2014, 15:31
 
Ответить
СообщениеДобрый день.

Есть два файла - book1 и book2. Написал простенький макрос чтобы сравнивало уникальные значения в столбцах B (обоих книг) и при нахождении совпадения подставляло значения из 3-го столбца book2 в третий столбец book1. Книжки в одной папке. Макрос в модуле первой книги

[vba]
Код
Sub compare()
Dim compareRange As Variant, compareRange1 As Variant, x As Variant, y As Variant

Set compareRange = Sheets("sheet1").Range("B2:B6")
Set compareRange1 = Workbooks("book2.xls").Sheets("sheet1").Range("B2:B6")

For Each x In compareRange
For Each y In compareRange1

      If x = y Then x.Offset(0, 1) = y.Offset(0, 1)

Next y
Next x

End Sub
[/vba]

Забыл добавить - ничего не происходит при выполнении макроса.

Автор - Treider01
Дата добавления - 01.12.2014 в 15:28
RAN Дата: Понедельник, 01.12.2014, 17:37 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Workbooks("book2.xls").Sheets("sheet1")
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Workbooks("book2.xls").Sheets("sheet1")
[/vba]

Автор - RAN
Дата добавления - 01.12.2014 в 17:37
Treider01 Дата: Вторник, 02.12.2014, 12:24 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 1 ±
Замечаний: 0% ±

Excel 2003
Workbooks("book2.xls").Sheets("sheet1")


К дару телепатии у меня добавился дар провидения, поэтому свою ошибку нашёл до.

Всёравно спасибо.

UPD.
К сожалению оба дара в очередной раз не работают. Хотя может я где то ошибся по незнанию.

[vba]
Код
Sub compare()
Dim compareRange As Variant, compareRange1 As Variant, x As Variant, y As Variant, j As Long

With Workbooks("book2.xls").Sheets("sheet1")
      
     j = .Cells(.Rows.Count, "b").End(xlUp).Row

Set compareRange1 = Range(Cells(2, "b"), Cells(j, "b"))  
          
     For Each x In compareRange1  
         x = Split(WorksheetFunction.Trim(x), " ")  
     Next x
          
End With

With Sheets("sheet1")

Set compareRange = Sheets("sheet1").Range("B2:B100")
      
     For Each y In compareRange
     For Each x In compareRange1

         If y = x Then y.Offset(0, 1) = x.Offset(0, 1)

         Next x
         Next y
End With

End Sub
[/vba]

Не работает. Работал когда выгружал значения масивов в соседнюю ячейку, делал из них новый масив и сравнивал со вторым. Но потом подумал что оно мне не надо, т.к. работал долго и странно.

Так же хотелось бы ускорить работу макроса.
К сообщению приложен файл: 5339401.xls (32.0 Kb) · 6955503.xls (20.0 Kb)


Сообщение отредактировал Treider01 - Вторник, 02.12.2014, 12:54
 
Ответить
Сообщение
Workbooks("book2.xls").Sheets("sheet1")


К дару телепатии у меня добавился дар провидения, поэтому свою ошибку нашёл до.

Всёравно спасибо.

UPD.
К сожалению оба дара в очередной раз не работают. Хотя может я где то ошибся по незнанию.

[vba]
Код
Sub compare()
Dim compareRange As Variant, compareRange1 As Variant, x As Variant, y As Variant, j As Long

With Workbooks("book2.xls").Sheets("sheet1")
      
     j = .Cells(.Rows.Count, "b").End(xlUp).Row

Set compareRange1 = Range(Cells(2, "b"), Cells(j, "b"))  
          
     For Each x In compareRange1  
         x = Split(WorksheetFunction.Trim(x), " ")  
     Next x
          
End With

With Sheets("sheet1")

Set compareRange = Sheets("sheet1").Range("B2:B100")
      
     For Each y In compareRange
     For Each x In compareRange1

         If y = x Then y.Offset(0, 1) = x.Offset(0, 1)

         Next x
         Next y
End With

End Sub
[/vba]

Не работает. Работал когда выгружал значения масивов в соседнюю ячейку, делал из них новый масив и сравнивал со вторым. Но потом подумал что оно мне не надо, т.к. работал долго и странно.

Так же хотелось бы ускорить работу макроса.

Автор - Treider01
Дата добавления - 02.12.2014 в 12:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух диапазонов и подстановка значений (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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