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

Вход

Регистрация

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

 

= Мир MS Excel/Цикл по строкам для 3ёх масиивов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл по строкам для 3ёх масиивов (Макросы/Sub)
Цикл по строкам для 3ёх масиивов
superscope Дата: Среда, 21.10.2015, 13:27 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, господа.

Моих скудных знаний не хватило для решения следующей задачи:
Есть 3 листа:

Лист1 в столбцах:
Номер заказа
Номер Товара
Кол-во Товара

Лист2 (Состояние склада 1) в столбцах:
Номер Товара
Кол-во Товара

Лист3 (Состояние склада 2) в столбцах:
Номер Товара
Кол-во Товара

Нужно написать цикл который построчно брал бы с 1ого листа значение кол-ва товара, искал бы сначала на Листе2 соответствующий товар и вычитал кол-во, если кол-во <0, то переходил бы на Лист3 и вычитал кол-во.
В результате нужно получить на Лист4 таблицу вида:
"Заказ Номер" "Строк натянулось на склад1" "Строк натянулось на склад2"
Соответственно чем дольше работает цикл, тем больше строк будет натягиваться на склад2

Моих знаний хватило на цикл, который копирует значения номера товара и кол-ва в переменные и ищет значение на Листе2, дальше возникли вопросы:

Начал писать следующее и затупил:

[vba]
Код

Sub calc()

Dim Id As Long
Dim Qty As Long
Dim Order As Long
Dim i , j as Long

With Worksheets("orders") 'заказы
   For j = 1 To 6164
   Id = .Cells(j, 5).Value
   Qty = .Cells(j, 4).Value
      With Worksheets("ml") 'склад1
      Range(A1:A50000).Find(Id, xlValues, xlWhole) '??????
[/vba]

Вопрос в следующем: Как мне используя метод Range.Find вычитать значение из соседней с номером товара ячейки на Листе2?
Далее используя If на проверку отрицательности значения на Листе2 я аналогично буду вычитать на Листе3, и используя j = j + 1 пробегу все строки с Листа1 заказы?
 
Ответить
СообщениеЗдравствуйте, господа.

Моих скудных знаний не хватило для решения следующей задачи:
Есть 3 листа:

Лист1 в столбцах:
Номер заказа
Номер Товара
Кол-во Товара

Лист2 (Состояние склада 1) в столбцах:
Номер Товара
Кол-во Товара

Лист3 (Состояние склада 2) в столбцах:
Номер Товара
Кол-во Товара

Нужно написать цикл который построчно брал бы с 1ого листа значение кол-ва товара, искал бы сначала на Листе2 соответствующий товар и вычитал кол-во, если кол-во <0, то переходил бы на Лист3 и вычитал кол-во.
В результате нужно получить на Лист4 таблицу вида:
"Заказ Номер" "Строк натянулось на склад1" "Строк натянулось на склад2"
Соответственно чем дольше работает цикл, тем больше строк будет натягиваться на склад2

Моих знаний хватило на цикл, который копирует значения номера товара и кол-ва в переменные и ищет значение на Листе2, дальше возникли вопросы:

Начал писать следующее и затупил:

[vba]
Код

Sub calc()

Dim Id As Long
Dim Qty As Long
Dim Order As Long
Dim i , j as Long

With Worksheets("orders") 'заказы
   For j = 1 To 6164
   Id = .Cells(j, 5).Value
   Qty = .Cells(j, 4).Value
      With Worksheets("ml") 'склад1
      Range(A1:A50000).Find(Id, xlValues, xlWhole) '??????
[/vba]

Вопрос в следующем: Как мне используя метод Range.Find вычитать значение из соседней с номером товара ячейки на Листе2?
Далее используя If на проверку отрицательности значения на Листе2 я аналогично буду вычитать на Листе3, и используя j = j + 1 пробегу все строки с Листа1 заказы?

Автор - superscope
Дата добавления - 21.10.2015 в 13:27
_Boroda_ Дата: Среда, 21.10.2015, 13:53 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Без Вашего файла примерно так
[vba]
Код
     With Worksheets("ml") 'склад1
    r_ = .Range("A1:A50000").Find("380", , xlValues).Row
    n_ = .Range("B" & r_).Value
[/vba]
n_ получится соответствующее значение из листа ml


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеБез Вашего файла примерно так
[vba]
Код
     With Worksheets("ml") 'склад1
    r_ = .Range("A1:A50000").Find("380", , xlValues).Row
    n_ = .Range("B" & r_).Value
[/vba]
n_ получится соответствующее значение из листа ml

Автор - _Boroda_
Дата добавления - 21.10.2015 в 13:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл по строкам для 3ёх масиивов (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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