Добрый день!, помогите новичку в общем на лист1 есть типо прайса, колонка A-артикул, B-наименование, D-количество. Вставляю на лист2 другую таблицу, где A-артикул, B-наименование, D-количество. нужно чтоб exel сканировал лист1(столбец A) и лист2(столбец A) и при совподении артикулов нужно чтоб он копировал из листа2(столбец D количество) в лист1 (столбец D количество)
в поиске нашел токо вот такой макрос но не как не могу добится работоспособности.
[vba]
Код
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
[/vba] [admin]Оформляйте коды тегами, во избежание бана![/admin]
Добрый день!, помогите новичку в общем на лист1 есть типо прайса, колонка A-артикул, B-наименование, D-количество. Вставляю на лист2 другую таблицу, где A-артикул, B-наименование, D-количество. нужно чтоб exel сканировал лист1(столбец A) и лист2(столбец A) и при совподении артикулов нужно чтоб он копировал из листа2(столбец D количество) в лист1 (столбец D количество)
в поиске нашел токо вот такой макрос но не как не могу добится работоспособности.
[vba]
Код
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
[/vba] [admin]Оформляйте коды тегами, во избежание бана![/admin]shoma
Сообщение отредактировал shoma - Пятница, 30.08.2013, 10:09
For j = 2 To ThisWorkbook.Worksheets("Лист2").Cells(1, 1).End(xlDown).Row For i = 2 To ThisWorkbook.Worksheets("Лист1").Cells(1, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист2").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 4) = ThisWorkbook.Worksheets("Лист2").Cells(j, 4) Exit For End If Next i Next j End Sub
[/vba] PS Почему у меня при вставке из буфера русские буквы превращаются в крякозябры?
[vba]
Код
Public Sub Compare() Dim i As Long Dim j As Long
For j = 2 To ThisWorkbook.Worksheets("Лист2").Cells(1, 1).End(xlDown).Row For i = 2 To ThisWorkbook.Worksheets("Лист1").Cells(1, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист2").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 4) = ThisWorkbook.Worksheets("Лист2").Cells(j, 4) Exit For End If Next i Next j End Sub
[/vba] PS Почему у меня при вставке из буфера русские буквы превращаются в крякозябры?SergeyKorotun
Формуляр, чтож такие злые)), читал я правила и поиском пользовался.
нужно с листа5, столбик H(сумм.кол) должно скопироватся в лист1, столбик F. кол-во, при совпадении кода, файл перевел в 2003г но все равно выложить не могу он превышает 200кб, уже половина поудалял и все равно большой сильно
Формуляр, чтож такие злые)), читал я правила и поиском пользовался.
нужно с листа5, столбик H(сумм.кол) должно скопироватся в лист1, столбик F. кол-во, при совпадении кода, файл перевел в 2003г но все равно выложить не могу он превышает 200кб, уже половина поудалял и все равно большой сильноshoma
Уже само наименование столбца "Код" подразумевает заполнение его уникальными значениями, а у вас есть пустые ячейки. Сначала заполните их значениями а потом запускайте макрос. Если все же в коде могут присутствовать пустые значения, то определение конечных ячеек [vba]
[/vba] нужно как то по другому определять, например через UsedRange
[vba]
Код
Sub Синхронизация() Dim i As Long Dim j As Long
For j = 2 To ThisWorkbook.Worksheets("Лист5").Cells(1, 1).End(xlDown).Row For i = 41 To ThisWorkbook.Worksheets("Лист1").Cells(40, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист5").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 6) = ThisWorkbook.Worksheets("Лист5").Cells(j, 8) Exit For End If Next i Next j End Sub
[/vba]
Уже само наименование столбца "Код" подразумевает заполнение его уникальными значениями, а у вас есть пустые ячейки. Сначала заполните их значениями а потом запускайте макрос. Если все же в коде могут присутствовать пустые значения, то определение конечных ячеек [vba]
[/vba] нужно как то по другому определять, например через UsedRange
[vba]
Код
Sub Синхронизация() Dim i As Long Dim j As Long
For j = 2 To ThisWorkbook.Worksheets("Лист5").Cells(1, 1).End(xlDown).Row For i = 41 To ThisWorkbook.Worksheets("Лист1").Cells(40, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист5").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 6) = ThisWorkbook.Worksheets("Лист5").Cells(j, 8) Exit For End If Next i Next j End Sub
Формуляр, в ячейке с количеством не должно быть формул, поэтому и хочу сделать через макрос, совпадения есть точно 3 штуки(я их специально делал). Это я только начинаю ее доводить до ума поэтому пока вводом артикулов не занимался. На листе5 туда выгружеться эта спецификация из другой программы, и то что не заполнилось на листе1 будет заполнятся в ручную. Это еще эспирементальный файл
Формуляр, в ячейке с количеством не должно быть формул, поэтому и хочу сделать через макрос, совпадения есть точно 3 штуки(я их специально делал). Это я только начинаю ее доводить до ума поэтому пока вводом артикулов не занимался. На листе5 туда выгружеться эта спецификация из другой программы, и то что не заполнилось на листе1 будет заполнятся в ручную. Это еще эспирементальный файлshoma
вот с этим макросом авто заполнение работает ровно до пустой строчки на листе5, если заполнить все срочки то все работает, просто не у всех материалов есть код, это можно как нибудь обойти?
SergeyKorotun,
вот с этим макросом авто заполнение работает ровно до пустой строчки на листе5, если заполнить все срочки то все работает, просто не у всех материалов есть код, это можно как нибудь обойти?shoma
For j = 2 To ThisWorkbook.Worksheets("Лист5").Cells(65536, 1).End(xlUp).Row For i = 41 To ThisWorkbook.Worksheets("Лист1").UsedRange.Rows.Count 'Cells(40, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) <> "" And ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист5").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 6) = ThisWorkbook.Worksheets("Лист5").Cells(j, 8) Exit For End If Next i Next j End Sub
[/vba] PS 14:14 немного подправил
[vba]
Код
Sub Синхронизация() Dim i As Long Dim j As Long
For j = 2 To ThisWorkbook.Worksheets("Лист5").Cells(65536, 1).End(xlUp).Row For i = 41 To ThisWorkbook.Worksheets("Лист1").UsedRange.Rows.Count 'Cells(40, 1).End(xlDown).Row If ThisWorkbook.Worksheets("Лист1").Cells(i, 1) <> "" And ThisWorkbook.Worksheets("Лист1").Cells(i, 1) = ThisWorkbook.Worksheets("Лист5").Cells(j, 1) Then ThisWorkbook.Worksheets("Лист1").Cells(i, 6) = ThisWorkbook.Worksheets("Лист5").Cells(j, 8) Exit For End If Next i Next j End Sub
совпадения есть точно 3 штуки(я их специально делал)
Действительно есть. Только вы не указали, с какой строчки список начинается (вернее, указали, что с 1ой). Я с 1й и вставил. Держите макрос. [vba]
Код
Sub Синхронизация() Dim i As Long Dim j As Long
For j = 2 To [Лист5].Cells(1, 2).End(xlDown).Row For i = 41 To [Лист1].Cells(40, 2).End(xlDown).Row If [Лист1].Cells(i, 1) = [Лист5].Cells(j, 1) Then [Лист1].Cells(i, 6) = [Лист5].Cells(j, 8) Exit For End If Next i Next j End Sub
совпадения есть точно 3 штуки(я их специально делал)
Действительно есть. Только вы не указали, с какой строчки список начинается (вернее, указали, что с 1ой). Я с 1й и вставил. Держите макрос. [vba]
Код
Sub Синхронизация() Dim i As Long Dim j As Long
For j = 2 To [Лист5].Cells(1, 2).End(xlDown).Row For i = 41 To [Лист1].Cells(40, 2).End(xlDown).Row If [Лист1].Cells(i, 1) = [Лист5].Cells(j, 1) Then [Лист1].Cells(i, 6) = [Лист5].Cells(j, 8) Exit For End If Next i Next j End Sub
SergeyKorotun, работает! Огромное спасибо!!! что потратили на меня время, если не сложно можно узнать как сейчас работает макрос и по какому столбцу ищет?
SergeyKorotun, работает! Огромное спасибо!!! что потратили на меня время, если не сложно можно узнать как сейчас работает макрос и по какому столбцу ищет?shoma