Здравствуйте!каким кодом можно найти одинаковые по условию значения находящиеся на разных листах и строках? например: на четвертом листе есть строка ( __ - значит следующий столбец): №4__"ЮБКА 1275"__ МР надо найти если есть "ЮБКА 1275"__МР на первом листе. условие это второй и третий столбец.
наверное не понятно объяснил..
Здравствуйте!каким кодом можно найти одинаковые по условию значения находящиеся на разных листах и строках? например: на четвертом листе есть строка ( __ - значит следующий столбец): №4__"ЮБКА 1275"__ МР надо найти если есть "ЮБКА 1275"__МР на первом листе. условие это второй и третий столбец.
вот пример(почему так много весит не знаю, вроде сократил все по максимум). что мне надо: 1 - если мы заходим на лист "Реализация", выбираем товар(кликаем по названию товара)(для нашего примера выберите товар с критерием "МР"), появляется форма, если Label12 = "МР", значит товар есть и на Листе "Реализация" и на листе "Магазин"(но под разными номерами), далее если мы в форме выбираем "На другую точку", то это кол-во должно приплюсоваться к остатку этого же товара на Листе "Магазин", на листе "Реализация" без изменений. 2 - если мы заходим на Лист "Магазин", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться как из остатка на Листе "Магазин", так и из остатка этого же товара на Листе "Реализация". 3 - если мы заходим на Лист "Реализация", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться только из остатка на Листе "Реализация"
в примере есть Лист "Совпадения" там макрос ищет одинаковые значения по столбцу "В"(Товар) может пригодится для кода.
вот пример(почему так много весит не знаю, вроде сократил все по максимум). что мне надо: 1 - если мы заходим на лист "Реализация", выбираем товар(кликаем по названию товара)(для нашего примера выберите товар с критерием "МР"), появляется форма, если Label12 = "МР", значит товар есть и на Листе "Реализация" и на листе "Магазин"(но под разными номерами), далее если мы в форме выбираем "На другую точку", то это кол-во должно приплюсоваться к остатку этого же товара на Листе "Магазин", на листе "Реализация" без изменений. 2 - если мы заходим на Лист "Магазин", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться как из остатка на Листе "Магазин", так и из остатка этого же товара на Листе "Реализация". 3 - если мы заходим на Лист "Реализация", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться только из остатка на Листе "Реализация"
в примере есть Лист "Совпадения" там макрос ищет одинаковые значения по столбцу "В"(Товар) может пригодится для кода.AKSENOV048
Даа, уж навернули так навернули... Я теперь уже в код лезть не рискну, как бы чего не сломать А с поиском так можно сделать - т.к. форма в магазине своя, то просто пишем на кнопку ОК код поиска в реализации типа такого (если продано, т.е. если в том поле есть значение, ну или по какому условию будем искать): [vba]
Код
With Sheets("РЕАЛИЗАЦИЯ") Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) End With Set x = r.Find(what:=TextBox9.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not x Is Nothing Then MsgBox x.Offset(, 3) End If
[/vba]
Далее с x.Offset(, 3).Value делаем что угодно - отнимаем/прибавляем. Это естественно вместо MsgBox x.Offset(, 3). x - это будет ссылка на найденную ячейку с названием, по offset мы получаем ссылку на нужную ячейку с количеством. Да, выше можно объявить r as range, x as range. Впрочем, без r можно обойтись, запихнув .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) сразу перед find вместо переменной r.
Даа, уж навернули так навернули... Я теперь уже в код лезть не рискну, как бы чего не сломать А с поиском так можно сделать - т.к. форма в магазине своя, то просто пишем на кнопку ОК код поиска в реализации типа такого (если продано, т.е. если в том поле есть значение, ну или по какому условию будем искать): [vba]
Код
With Sheets("РЕАЛИЗАЦИЯ") Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) End With Set x = r.Find(what:=TextBox9.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not x Is Nothing Then MsgBox x.Offset(, 3) End If
[/vba]
Далее с x.Offset(, 3).Value делаем что угодно - отнимаем/прибавляем. Это естественно вместо MsgBox x.Offset(, 3). x - это будет ссылка на найденную ячейку с названием, по offset мы получаем ссылку на нужную ячейку с количеством. Да, выше можно объявить r as range, x as range. Впрочем, без r можно обойтись, запихнув .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) сразу перед find вместо переменной r.Hugo
только не ругайтесь, все равно не пойму например мне надо написать x.Offset(, 3).Value = остаток из листа Реализация - значение продано (Me.TextBox2). как?
только не ругайтесь, все равно не пойму например мне надо написать x.Offset(, 3).Value = остаток из листа Реализация - значение продано (Me.TextBox2). как?AKSENOV048
x.Offset(, 3).Value - это и есть остаток из листа Реализация, мы ведь ищем на этом листе название товара. Если нашли такую ячейку - берём значение на 3 правее и изменяем. Если не нашли - тогда ничего. Но может быть, если не нашли, то нужно вывести сообщение, что такого товара в реализации нет?
x.Offset(, 3).Value - это и есть остаток из листа Реализация, мы ведь ищем на этом листе название товара. Если нашли такую ячейку - берём значение на 3 правее и изменяем. Если не нашли - тогда ничего. Но может быть, если не нашли, то нужно вывести сообщение, что такого товара в реализации нет?Hugo
возникла загвоздка. добавил новый код на скрытие строк если значение столбца "Е" = 0, и теперь код не работает, не ищет в скрытых строках, можно в нем что то дополнить? код на скрытие [vba]
Код
Sub HideRows() Dim x(), i&, hr As Range: Application.ScreenUpdating = 0 With Range([e2], Cells(Rows.Count, 5).End(xlUp)) x = .Value For i = 3 To UBound(x) If x(i, 1) = 0 Then If hr Is Nothing Then Set hr = .Cells(i) Else Set hr = Union(hr, .Cells(i)) End If Next i .EntireRow.Hidden = False End With If Not hr Is Nothing Then hr.EntireRow.Hidden = True Application.ScreenUpdating = 1 End Sub
[/vba]
код поиска одинаковых значений [vba]
Код
With Sheets("Магазин") Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) End With Set x = r.Find(what:=TextBox9.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not x Is Nothing Then x.Offset(, 3).Value = x.Offset(, 3).Value + Val(Me.TextBox4)
[/vba]
возникла загвоздка. добавил новый код на скрытие строк если значение столбца "Е" = 0, и теперь код не работает, не ищет в скрытых строках, можно в нем что то дополнить? код на скрытие [vba]
Код
Sub HideRows() Dim x(), i&, hr As Range: Application.ScreenUpdating = 0 With Range([e2], Cells(Rows.Count, 5).End(xlUp)) x = .Value For i = 3 To UBound(x) If x(i, 1) = 0 Then If hr Is Nothing Then Set hr = .Cells(i) Else Set hr = Union(hr, .Cells(i)) End If Next i .EntireRow.Hidden = False End With If Not hr Is Nothing Then hr.EntireRow.Hidden = True Application.ScreenUpdating = 1 End Sub
[/vba]
код поиска одинаковых значений [vba]
Код
With Sheets("Магазин") Set r = .Range(.[B2], .Range("B" & .Rows.Count).End(xlUp)) End With Set x = r.Find(what:=TextBox9.Value, LookAt:=xlWhole, LookIn:=xlValues) If Not x Is Nothing Then x.Offset(, 3).Value = x.Offset(, 3).Value + Val(Me.TextBox4)