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

Вход

Регистрация

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

 

= Мир MS Excel/Учет расходов сырья на основе плана производства - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Учет расходов сырья на основе плана производства
alor1404 Дата: Четверг, 20.06.2024, 06:10 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

2016
Добрый день, необходимо на листе расход сырья ввести формулу, суть задачи взять ингридиенты из листа рецептура 2 и на основании плана по позициям посчитать итоговый расход по дням.
К сообщению приложен файл: otchet_po_syrju_ijun.xls (143.5 Kb)
 
Ответить
СообщениеДобрый день, необходимо на листе расход сырья ввести формулу, суть задачи взять ингридиенты из листа рецептура 2 и на основании плана по позициям посчитать итоговый расход по дням.

Автор - alor1404
Дата добавления - 20.06.2024 в 06:10
Nic70y Дата: Четверг, 20.06.2024, 08:48 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8857
Репутация: 2308 ±
Замечаний: 0% ±

Excel 2010
вдруг правильно
Код
=СУММ(Рецептура!$C2:$O2*ТРАНСП('План производства'!U$2:U$14))
формула массива
К сообщению приложен файл: 48.xls (85.0 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 20.06.2024, 08:51
 
Ответить
Сообщениевдруг правильно
Код
=СУММ(Рецептура!$C2:$O2*ТРАНСП('План производства'!U$2:U$14))
формула массива

Автор - Nic70y
Дата добавления - 20.06.2024 в 08:48
Hugo Дата: Четверг, 20.06.2024, 08:55 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
А как оно привязано к сырью? По позиции? ))
Вообще есть рабочий вариант сделать функцией пользователя, но не по профилю ((
Если нужна UDF - открывайте тему в VBA


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Четверг, 20.06.2024, 12:00
 
Ответить
СообщениеА как оно привязано к сырью? По позиции? ))
Вообще есть рабочий вариант сделать функцией пользователя, но не по профилю ((
Если нужна UDF - открывайте тему в VBA

Автор - Hugo
Дата добавления - 20.06.2024 в 08:55
Hugo Дата: Четверг, 20.06.2024, 09:42 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
вдруг правильно
a и сошлось, я правда сверял по другому файлу и другой рецептуре (как в ТЗ), и там есть некоторые несоответствия в исходных данных.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение
вдруг правильно
a и сошлось, я правда сверял по другому файлу и другой рецептуре (как в ТЗ), и там есть некоторые несоответствия в исходных данных.

Автор - Hugo
Дата добавления - 20.06.2024 в 09:42
alor1404 Дата: Пятница, 21.06.2024, 06:03 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

2016
Корректная рецептура на листе Рецептура 2. Как я понимаю там нет необходимости применять "ТРАНСП"?
 
Ответить
СообщениеКорректная рецептура на листе Рецептура 2. Как я понимаю там нет необходимости применять "ТРАНСП"?

Автор - alor1404
Дата добавления - 21.06.2024 в 06:03
Nic70y Дата: Пятница, 21.06.2024, 10:10 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 8857
Репутация: 2308 ±
Замечаний: 0% ±

Excel 2010
двойной клик левой кнопкой мыши по ячейке с датой
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False 'отключаем обновление экрана
    a = Target.Row      'строка ячейки
    b = Target.Column   'столбец ячейки
    c = Target.Value    'значение ячейки
    'если строка = 1 и столбец > 1 и значение не пустое
    If a = 1 And b > 1 And c <> "" Then
        Cancel = True 'отмена даблклика
        d = Cells(Rows.Count, "a").End(xlUp).Row                'нижняя строка столбца A (Расход сырья)
        e = Sheets("Рецептура").Cells(Rows.Count, "a").End(xlUp).Row            '*(Рецептура)
        For g = 2 To d 'цикл от 2й до нижней строки
            'цикл по столбцу (Рецептура)
            m = 0 'сумма
            For Each j In Sheets("Рецептура").Range(Sheets("Рецептура").Cells(2, g + 1), Sheets("Рецептура").Cells(e, g + 1)).SpecialCells(xlCellTypeConstants, 23)
                k = j.Row   'строка ячеки
                l = j.Value 'значение ячейки
                n = Sheets("План производства").Cells(k, b).Value 'значение ячейки (План производства)
                m = l * n + m 'сумма
            Next
            Cells(g, b) = m 'запишем сумму в ячейку
        Next
    End If
    Application.ScreenUpdating = True 'включаем
End Sub
[/vba]
апдэйт - выбросил лишнее

проверяйте, вдруг правильно
К сообщению приложен файл: 55.xlsm (52.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 21.06.2024, 10:36
 
Ответить
Сообщениедвойной клик левой кнопкой мыши по ячейке с датой
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False 'отключаем обновление экрана
    a = Target.Row      'строка ячейки
    b = Target.Column   'столбец ячейки
    c = Target.Value    'значение ячейки
    'если строка = 1 и столбец > 1 и значение не пустое
    If a = 1 And b > 1 And c <> "" Then
        Cancel = True 'отмена даблклика
        d = Cells(Rows.Count, "a").End(xlUp).Row                'нижняя строка столбца A (Расход сырья)
        e = Sheets("Рецептура").Cells(Rows.Count, "a").End(xlUp).Row            '*(Рецептура)
        For g = 2 To d 'цикл от 2й до нижней строки
            'цикл по столбцу (Рецептура)
            m = 0 'сумма
            For Each j In Sheets("Рецептура").Range(Sheets("Рецептура").Cells(2, g + 1), Sheets("Рецептура").Cells(e, g + 1)).SpecialCells(xlCellTypeConstants, 23)
                k = j.Row   'строка ячеки
                l = j.Value 'значение ячейки
                n = Sheets("План производства").Cells(k, b).Value 'значение ячейки (План производства)
                m = l * n + m 'сумма
            Next
            Cells(g, b) = m 'запишем сумму в ячейку
        Next
    End If
    Application.ScreenUpdating = True 'включаем
End Sub
[/vba]
апдэйт - выбросил лишнее

проверяйте, вдруг правильно

Автор - Nic70y
Дата добавления - 21.06.2024 в 10:10
Hugo Дата: Пятница, 21.06.2024, 10:23 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3370
Репутация: 722 ±
Замечаний: 0% ±

2019
Раз уж тут появилось VBA - мой первый вариант.
Ничего кликать не нужно - просто вводите формулу в первую ячейку и протягиваете вправо и вниз.
Но код проверяет только рецептуру и компоненты, даты не сверяются, следите за аргументом.
Хотя можно конечно дописать проверку, да вообще можно доработать для больших диапазонов чтоб работала одна функция, а не миллион...
P.S. для отличия от всех других сделал чтоб 0 не показывало ))
Смотрю в файле на 365-м Экселе показывает как будто это формула массива ({}), но эту функцию не нужно вводить как формулу массива, она обрабатывает и работает с одной ячейкой.
Вот если написать массивную сразу на весь диапазон - тогда это будет формула массива.
К сообщению приложен файл: otchet_po_syrju_ijun_udf.xls (128.5 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Пятница, 21.06.2024, 10:38
 
Ответить
СообщениеРаз уж тут появилось VBA - мой первый вариант.
Ничего кликать не нужно - просто вводите формулу в первую ячейку и протягиваете вправо и вниз.
Но код проверяет только рецептуру и компоненты, даты не сверяются, следите за аргументом.
Хотя можно конечно дописать проверку, да вообще можно доработать для больших диапазонов чтоб работала одна функция, а не миллион...
P.S. для отличия от всех других сделал чтоб 0 не показывало ))
Смотрю в файле на 365-м Экселе показывает как будто это формула массива ({}), но эту функцию не нужно вводить как формулу массива, она обрабатывает и работает с одной ячейкой.
Вот если написать массивную сразу на весь диапазон - тогда это будет формула массива.

Автор - Hugo
Дата добавления - 21.06.2024 в 10:23
  • Страница 1 из 1
  • 1
Поиск:

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