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

Вход

Регистрация

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

 

= Мир MS Excel/поиск одинаковых значение по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск одинаковых значение по условию
поиск одинаковых значение по условию
AKSENOV048 Дата: Вторник, 30.08.2011, 03:04 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Здравствуйте!каким кодом можно найти одинаковые по условию значения находящиеся на разных листах и строках?
например: на четвертом листе есть строка ( __ - значит следующий столбец): №4__"ЮБКА 1275"__ МР надо найти если есть "ЮБКА 1275"__МР на первом листе. условие это второй и третий столбец.

наверное не понятно объяснил..
 
Ответить
СообщениеЗдравствуйте!каким кодом можно найти одинаковые по условию значения находящиеся на разных листах и строках?
например: на четвертом листе есть строка ( __ - значит следующий столбец): №4__"ЮБКА 1275"__ МР надо найти если есть "ЮБКА 1275"__МР на первом листе. условие это второй и третий столбец.

наверное не понятно объяснил..

Автор - AKSENOV048
Дата добавления - 30.08.2011 в 03:04
light26 Дата: Вторник, 30.08.2011, 09:04 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1350
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Приложите файл - пример. По описанию действительно ничего не понятно


Я не волшебник. Я только учусь
 
Ответить
СообщениеПриложите файл - пример. По описанию действительно ничего не понятно

Автор - light26
Дата добавления - 30.08.2011 в 09:04
AKSENOV048 Дата: Вторник, 30.08.2011, 12:55 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

вот пример(почему так много весит не знаю, вроде сократил все по максимум).
что мне надо:
1 - если мы заходим на лист "Реализация", выбираем товар(кликаем по названию товара)(для нашего примера выберите товар с критерием "МР"), появляется форма, если Label12 = "МР", значит товар есть и на Листе "Реализация" и на листе "Магазин"(но под разными номерами), далее если мы в форме выбираем "На другую точку", то это кол-во должно приплюсоваться к остатку этого же товара на Листе "Магазин", на листе "Реализация" без изменений.
2 - если мы заходим на Лист "Магазин", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться как из остатка на Листе "Магазин", так и из остатка этого же товара на Листе "Реализация".
3 - если мы заходим на Лист "Реализация", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться только из остатка на Листе "Реализация"

в примере есть Лист "Совпадения" там макрос ищет одинаковые значения по столбцу "В"(Товар) может пригодится для кода.
К сообщению приложен файл: __excelworld.rar (59.8 Kb)


Сообщение отредактировал AKSENOV048 - Вторник, 30.08.2011, 12:59
 
Ответить
Сообщениевот пример(почему так много весит не знаю, вроде сократил все по максимум).
что мне надо:
1 - если мы заходим на лист "Реализация", выбираем товар(кликаем по названию товара)(для нашего примера выберите товар с критерием "МР"), появляется форма, если Label12 = "МР", значит товар есть и на Листе "Реализация" и на листе "Магазин"(но под разными номерами), далее если мы в форме выбираем "На другую точку", то это кол-во должно приплюсоваться к остатку этого же товара на Листе "Магазин", на листе "Реализация" без изменений.
2 - если мы заходим на Лист "Магазин", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться как из остатка на Листе "Магазин", так и из остатка этого же товара на Листе "Реализация".
3 - если мы заходим на Лист "Реализация", также выбираем товар с критерием "МР", далее в форме выбираем "ПРОДАНО", это кол-во должно вычитаться только из остатка на Листе "Реализация"

в примере есть Лист "Совпадения" там макрос ищет одинаковые значения по столбцу "В"(Товар) может пригодится для кода.

Автор - AKSENOV048
Дата добавления - 30.08.2011 в 12:55
Hugo Дата: Вторник, 30.08.2011, 13:49 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Даа, уж навернули так навернули...
Я теперь уже в код лезть не рискну, как бы чего не сломать smile
А с поиском так можно сделать - т.к. форма в магазине своя, то просто пишем на кнопку ОК код поиска в реализации типа такого (если продано, т.е. если в том поле есть значение, ну или по какому условию будем искать):
[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.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДаа, уж навернули так навернули...
Я теперь уже в код лезть не рискну, как бы чего не сломать smile
А с поиском так можно сделать - т.к. форма в магазине своя, то просто пишем на кнопку ОК код поиска в реализации типа такого (если продано, т.е. если в том поле есть значение, ну или по какому условию будем искать):
[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
Дата добавления - 30.08.2011 в 13:49
AKSENOV048 Дата: Вторник, 30.08.2011, 14:01 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Hugo, спасибо понял что к чему, но не все. т.е что мне надо написать вместо MsgBox x.Offset(, 3)?
 
Ответить
СообщениеHugo, спасибо понял что к чему, но не все. т.е что мне надо написать вместо MsgBox x.Offset(, 3)?

Автор - AKSENOV048
Дата добавления - 30.08.2011 в 14:01
Hugo Дата: Вторник, 30.08.2011, 14:10 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну например
Code

x.Offset(, 3).Value=x.Offset(, 3).Value - значениетекстбокса


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу например
Code

x.Offset(, 3).Value=x.Offset(, 3).Value - значениетекстбокса

Автор - Hugo
Дата добавления - 30.08.2011 в 14:10
AKSENOV048 Дата: Вторник, 30.08.2011, 14:20 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

только не ругайтесь,
все равно не пойму
например мне надо написать
x.Offset(, 3).Value = остаток из листа Реализация - значение продано (Me.TextBox2). как?
 
Ответить
Сообщениетолько не ругайтесь,
все равно не пойму
например мне надо написать
x.Offset(, 3).Value = остаток из листа Реализация - значение продано (Me.TextBox2). как?

Автор - AKSENOV048
Дата добавления - 30.08.2011 в 14:20
Hugo Дата: Вторник, 30.08.2011, 14:27 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
x.Offset(, 3).Value - это и есть остаток из листа Реализация, мы ведь ищем на этом листе название товара.
Если нашли такую ячейку - берём значение на 3 правее и изменяем.
Если не нашли - тогда ничего. Но может быть, если не нашли, то нужно вывести сообщение, что такого товара в реализации нет?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщениеx.Offset(, 3).Value - это и есть остаток из листа Реализация, мы ведь ищем на этом листе название товара.
Если нашли такую ячейку - берём значение на 3 правее и изменяем.
Если не нашли - тогда ничего. Но может быть, если не нашли, то нужно вывести сообщение, что такого товара в реализации нет?

Автор - Hugo
Дата добавления - 30.08.2011 в 14:27
AKSENOV048 Дата: Вторник, 30.08.2011, 14:30 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

аааа. ну вот теперь понятно спасибо за разъяснение. буду теперь знать. Спасибо большое еще раз!
 
Ответить
Сообщениеаааа. ну вот теперь понятно спасибо за разъяснение. буду теперь знать. Спасибо большое еще раз!

Автор - AKSENOV048
Дата добавления - 30.08.2011 в 14:30
AKSENOV048 Дата: Четверг, 08.09.2011, 20:46 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

возникла загвоздка. добавил новый код на скрытие строк если значение столбца "Е" = 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]


Сообщение отредактировал AKSENOV048 - Четверг, 08.09.2011, 20:47
 
Ответить
Сообщениевозникла загвоздка. добавил новый код на скрытие строк если значение столбца "Е" = 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]

Автор - AKSENOV048
Дата добавления - 08.09.2011 в 20:46
AKSENOV048 Дата: Четверг, 08.09.2011, 23:13 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 6 ±
Замечаний: 0% ±

Все вопрос решил: убрал LookIn:=xlValues. заработало. довооолен.
 
Ответить
СообщениеВсе вопрос решил: убрал LookIn:=xlValues. заработало. довооолен.

Автор - AKSENOV048
Дата добавления - 08.09.2011 в 23:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск одинаковых значение по условию
  • Страница 1 из 1
  • 1
Поиск:

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