Страницы: 1
RSS
Макрос для проверки ячейки на 0 или число
 
Добрый День!
вопросик, есть таблица, на листе "склад" в столбце F рассчитывается кол-во товара оставшегося после продаж из листа "магазин" исходя из того кол-ва которое было на листе "склад".
нужен макрос который будет проверять на листе "склад" столбец F, и при условии что в ячейке значение больше или меньше 0 , будет заменять данные на листе "склад" в столбце С. макрос будет запускаться по кнопке.
Заранее огромное спасибо.
файл пример прилагаю.
Изменено: dru_seb - 22.07.2016 16:11:38 (орфография и смысл)
 
dru_seb, имхо, задача не полная. Как я понимаю. По каждой позиции магазина макрос вычитает кол-во продаж от кол-ва на складе, после вычитания, что будет с продажами на листе магазин?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
после того как остатки на складе обновятся , с листа магазин будет распечатан отчёт и данные будут удалены.
 
dru_seb, попробуйте сформулировать более полно задачу, дабы избежать переделок, которые мало кто любит, например, я их не люблю.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
на листе "склад", в столбце F есть формула, которая рассчитывает кол-во товара, оставшегося после вычитания кол-ва проданного товара с листа "магазин" из количества которое было на листе "склад".
нужен макрос который будет запускать по кнопке и будет проверять на листе "склад" столбец Fна условие что в ячейке значение больше или меньше 0 , и если значение =0 то ничего не делать и проверить следующую строку, а если значение <>0 то будет заменять данные на листе "склад" в столбце С.  
 
dru_seb, здравия. Если продажи вычитать из остатка на складе макросом, то смысла в формуле не вижу.
ЗЫ Допустим макрос из остатков вычел продажи, после того как нажали кнопку. Но не застрахованы от повторного вычитания из остатков продаж, т.к. остатки то меняются, а продажи - нет. И что теперь? Как вариант предлагаю либо обнулять продажи после вычитания, либо, если Вам нужна история продаж, то добавить доп. поле, например, "вычтено из остатков". Решайте.
Изменено: JayBhagavan - 23.07.2016 09:44:35 (дописано ЗЫ)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
да согласен, действительно нужно после обновления остатков склада сразу обнулять продажи.
 
Скрытый текст

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, как Вы много написали. Мой вариант значительно короче или я чего-то не понял.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, мне захотелось сделать основательно.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
:)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Огромное спасибо всем, и отдельное Спасибо JayBhagavan   :*  !!! просто супер то что нужно. всё работает именно так как нужно! :)
 
маленькая просьба если можно, тот же самый макрос но не на списание со склада а на приход, я в ту таблицу добавил лист приход, там всё тоже что и на листе магазин. только теперь на листе склад будет 2е кнопки для двух макросов, чтобы по одной пересчёт проходил из учёта продаж на листе магазин, а по второй из учёта прихода с листа приход.  в столбце G на листе склад поставил вашу формулу и настроил, она уже считает остаток на скаде + приход, но если можно сделать так же что бы макрос в столбец С листа склад добавлял кол-во к существующему с листа приход и очищал на листе приход столбец D было бы супер.
ну если наглею, то сорри :)
в любом случае огромное сяп :) Вы супер !
файл пример в аттаче.
 
dru_seb, скопируйте макрос, модифицируйте под приход. (замените магазин на приход, вместо вычитания сделайте прибавление)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Добрый день JayBhagavan! да я так и сделал , заменил магазин на приход, но вот где поменять - на + не пойму.....видимо в этом куске кода...но что именно ...?
Код
' - считать продажи приход. в массив (ш/к, продано)
        With .Sheets(sSHOP_NAME_WSH)
            lLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Range("A2").Row > lLastRow Then
                MsgBox "Продаж в приходе не обнаружено." & Chr(10) & _
                    "Макрос прерывает свою работу.", vbCritical
                Exit Sub
            End If
            Set rngShop = .Range("A2:D" & lLastRow)
        End With ' .Sheets(sSHOP_NAME_WSH)
        Set dictShop = CreateObject("scripting.dictionary")
        arrShop = rngShop.Value
Изменено: dru_seb - 26.07.2016 16:54:01
 
Код снабжён комментариями. Ищите следующее:
Код
' - от остатка отняли продажи
Под ним редактируйте строку кода - меняйте минус на плюс. И всё.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
да точно, так и есть , теперь всё ок.
Ещё раз огромное Спасибо!
Страницы: 1
Наверх