Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как сравнить и скопировать ячейки в excel из разных книг?  (Прочитано 23863 раз)
0 Пользователей и 1 Гость смотрят эту тему.
cybereug
Гость
« : 17-07-2006 07:56 » 

Необходимо сравнить ячейки столбца (допустим столбец 1) в excel из одной книги (книга 1) с другой (книга 2) и при совпадении значений скопировать из книги 2 в книгу 1 рядом стоящую ячейку в строке. Заранее спасибо!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 18-07-2006 05:44 » 

посмотри здесь

http://sql.ru/forum/actualthread.aspx?tid=309919
Записан

I Have Nine Lives You Have One Only
THINK!
cybereug
Гость
« Ответ #2 : 18-07-2006 07:53 » 

Спасибо за ссылку. Но там обсуждаются проблемные вопросы, а моя ситуация простая, просто я начинающий програмист и незнаю как это сделать. Если кто поможет буду очень благодарен!
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #3 : 18-07-2006 08:12 » 

в excel функция есть СУММАЕСЛИ() или СУММЕСЛИ(). не подойдет?
Записан

Славная трава...
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 18-07-2006 08:20 » 

На VBA примерно так:
Код:
Dim wbk As Workbook
 Set wbk = Application.ActiveWorkbook
 For i = 1 To 100 '100 - диапазон сравнения
 If wbk.Sheets("книга1").Cells(i, 1) <> wbk.Sheets("книга2").Cells(i, 1) Then
  wbk.Sheets("книга1").Cells(i, 2) = wbk.Sheets("книга2").Cells(i, 2)
 End If
 Next
« Последнее редактирование: 17-12-2007 17:28 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
cybereug
Гость
« Ответ #5 : 18-07-2006 08:30 » 

выводит invalid procedure name
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 18-07-2006 08:32 » 

ну а как ты свою процедуру назвал ? Ага
Записан

Удачного всем кодинга! -=x[PooH]x=-
cybereug
Гость
« Ответ #7 : 18-07-2006 08:35 » 

я бы назвал если бы знал как надо  Ага если можно напишите код целиком
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 18-07-2006 09:13 » 

обычно Мастер сам создает начало и конец процедуры у тебя только имя спрашивает, вот например полный код:
Код:
Sub my_proc()
Dim wbk As Workbook
 Set wbk = Application.ActiveWorkbook
 For i = 1 To 100 '100 - диапазон сравнения
 If wbk.Sheets("книга1").Cells(i, 1) <> wbk.Sheets("книга2").Cells(i, 1) Then
  wbk.Sheets("книга1").Cells(i, 2) = wbk.Sheets("книга2").Cells(i, 2)
 End If
 Next
End Sub
« Последнее редактирование: 17-12-2007 17:32 от Алексей1153++ » Записан

Удачного всем кодинга! -=x[PooH]x=-
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #9 : 18-07-2006 11:21 » 

PooH
у вас сравниваются листы, а надо книги
Записан

I Have Nine Lives You Have One Only
THINK!
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #10 : 18-07-2006 11:47 » 

на подобие вышеизложенных кодов от Pooh
Код:
Public Sub Compare()
    Dim i As Integer
    Dim wb As Excel.Workbook
   
    Set wb = Excel.Workbooks("Книга1")      'получаем экземпляр книги с которой нужно сравнивать
   
    'проверить 100 строк
    For i = 1 To 100
            If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) <> wb.Worksheets("Лист1").Cells(i, 1) Then
                ' в столбец С пишем значение из столбца В книги 1
                ThisWorkbook.Worksheets("Лист1").Cells(i, 3) = wb.Worksheets("Лист1").Cells(i, 2)
            End If
    Next i
End Sub

Условия:
1) Книги должны быть открыты

ЗЫЖ имена и диаползон подправите сами
« Последнее редактирование: 17-12-2007 17:35 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
cybereug
Гость
« Ответ #11 : 18-07-2006 12:10 » 

большое спасибо, заработало!
Записан
cybereug
Гость
« Ответ #12 : 20-07-2006 11:50 » 

Почему то ячейки содержащие html код не копируются, или копируются по частям (часть ячейки), с чем эти это может быть связано?

ячейка может иметь такой вид:
-------
<table border=0">    <tbody>        <tr>            <td>Заголовок</td>            <td>описание</td>        </tr>        <tr>            <td valign="middle" colspan="2" height="5"><img height="1" src="http://www.***.ru/pics/common/tree_line.gif" width="100%" alt="" /></td>        </tr>        <tr>            <td>текст</td>            <td>txt
------
Записан
SAS888
Гость
« Ответ #13 : 14-09-2006 09:44 » 

Попробуй так:

For i=1 To 100
   Comp = StrComp(Workbooks(Книга1.xls).Sheets(Лист1).Cells(i, 1), Workbooks(Книга2.xls).Sheets(Лист1).Cells(i, 1), vbTextCompare)
        If Comp = 0 Then Workbooks(Книга2.xls).Sheets(Лист1).Cells(i, 1) Copy Workbooks(Книга1.xls).Sheets(Лист1).Cells(i, 2)
Next i
Необходимо, чтобы обе книги были открыты.
Но можно сравнивать и копировать  не открывая Книгу2 (если нужно могу подсказать).
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines