Формула фифо в excel

Финансы в Excel

Стоимость складского запаса

Подробности
Создано 13 Февраль 2014

В одном из вопросов, пришедших на сайт, была затронута интересная тема учета запасов на складе в стоимостном выражении. В нашей программе стоимостной учет остатков не автоматизирован – показалось, что организовать расчеты на уровне формул, слишком сложно. Но в качестве теоретического примера эту задачу вполне можно решить и с помощью электронных таблиц.

В финансовом учете существуют несколько методов ценовой политики для расчета себестоимости произведенной продукции и складских остатков:

  • FIFO (first in – first out)
  • LIFO (last in – first out)
  • «По среднему»

Первый и второй метод предполагают партионный учет каждой поставки с использованием конкретной цены закупки в себестоимости производства или запаса. В FIFO используются партии запасов в хронологическом порядке от самой ранней к самой поздней, в LIFO, наоборот, от последней к первой по времени.

Метод «по среднему» подразумевает пересчет цены материала после каждой поставки. Новое значение стоимости определяется как средневзвешенное по количеству значение между стоимостью запаса и стоимостью поступившей партии.

Каждый метод имеет свои преимущества и недостатки. В бухгалтерском учете наиболее популярен вариант учета FIFO – для его реализации обычно используется автоматизированная учетная система (бухгалтерская программа).

Обработать даже небольшой массив информации с учетом партий закупки в Excel достаточно сложно — требуется много промежуточных расчетов. Пример подобного расчета в приложенном к статье файле на листе FIFO.

alt

В идеале, хотелось бы видеть стоимость каждой партии остатка на складе после каждой операции, но добиться этого не получилось. Формулы для расчета только последней стоимости запасов получились настолько сложными, что, пожалуй, даже лучше было бы написать UDF-функцию, скрывающую все промежуточные расчеты.

Еще одна проблема такого сложного расчета – это заметное ухудшение производительности на больших объемах данных. А складские данные даже на небольших предприятиях обычно измеряются тысячами записей.

Расчеты по LIFO в электронных таблицах связаны с теми же проблемами, пример делать не стали. А вот расчет по средневзвешенной цене запаса реализовать в Excel не очень сложно. В примере к статье такой расчет приведен на листе Average.

alt

Здесь, в отличие от FIFO, рассчитывается цена на складе после каждой операции. Поступления товаров изменяют среднюю стоимость единицы товара с учетом нового количества и цены. Операции по расходу не влияют на цену товара на складе. Единственная сложная формула предназначена для поиска последней операции с текущим товаром (Avarage!I6):

{ =MAX(IF(C$5:C5=$C6;ROW(I$5:I5)-ROW(I$5);0))}

Здесь организуется поиск в вертикальном массиве в обратную сторону (MATCH наоборот). В результате определяется относительное смещение от заголовка таблицы (строка 5).

Следует заметить, что объем данных также будет влиять на производительность, но на порядок меньше, чем в случае формул для FIFO-метода расчетов.

Смотри также

» Расчет расхода по спецификациям

Материальная составляющая производственного процесса в большинстве случаев описывается через вхождение компонентов в готовые…

» Складской учет

 Программа предназначена для материального учета ресурсов различного типа. Возможна реализация учета в стоимостном…

» Редактирование сводной таблицы

Сводные таблицы Excel является мощным средством анализа данных. При этом исходные данные могут храниться как в электронных таблицах, так…

Главная » Мои надстройки »

4 Июнь 2012              46647 просмотров

Что это такое методы LiFo и FiFo? В принципе, разрабатывая данную надстройку я рассчитывал на то, что люди, которые будут ей пользоваться уже знают что это за методы. Но не исключаю того варианта, что надстройкой будут пользоваться люди, не имеющие понятия о методах LIFO и FIFO, но в силу рода своей деятельноси им все же понадобилось это знать или использовать. Поэтому решил в общих чертах ввести в общий курс дела.

LIFO(от английского Last In, First Out — последним пришел, первым ушел) — метод бухгалтерского учёта товарно-материальных ценностей (в дальнейшем ТМЦ), в соответствии с которым, ТМЦ, которые были поставлены на учёт последними, с учёта выбывают первыми. Соответственно, по цене товаров, прибывших последними.

Особенности учета по методу LIFO:

  • редко учитывается фактическое движение запасов товаров;
  • предполагается, что все товары, приобретенные в течение периода, могут быть выставлены на продажу, независимо от даты их покупки;
  • запасы на конец периода оцениваются по стоимости первых закупок.

Данный принцип используется на складах с узкой номенклатурой и большими объемами товаров, для которых не важен срок хранения и отгрузки. Это различные промышленные товары, многие товары народного потребления и т. д.

FIFO(от английского First In, First Out — первым пришел, первым ушел) — метод бухгалтерского учёта ТМЦ, в соответствии с которым ТМЦ, поставленные на учёт первыми выбывают с учёта тоже первыми. Соответственно, по цене товаров, прибывших первыми(которые и списываются).

Используется на складах для скоропортящихся товаров, товаров пищевой, фармацевтической, косметической и химической промышленности, других товаров с ограниченным сроком годности или товаров разового спроса(например, газет).

Стандартных формул для подсчета количество товара, а так же суммы товара данными методами в Excel нет. Ниже вы сможете скачать мою надстройку, которая умеет это делать. В надстройке реализованы пользовательские функции:

  • LIFO_Count — подсчет остатков товара на складе на указанную дату методом LIFO.
  • LIFO_Summ — выводит общую сумму остатков на указанную дату. Сумма рассчитывается методом LIFO.
  • FIFO_Count — подсчет остатков товара на складе на указанную дату методом FIFO.
  • FIFO_Summ — выводит общую сумму остатков на указанную дату. Сумма рассчитывается методом FIFO.

В архиве расположена сама надстройка и файл помощи, в котором подробно описаны все функции и их аргументы. Как установить надстройку: Установка надстроек
Если Вы используете Excel 2007 или 2010, то отобразится вкладка Надстройки и в ней будет панель, с которой можно вызвать любую из функций надстройки или справку по функциям

Для Excel 2003 будет создана отдельная панель с аналогичным содержимым.
Для того, чтобы воспользоваться функцией необходимо выделить ячейку на листе и вызвать нужную функцию с панели простым нажатием. Появиться стандартное окно ввода аргументов функции. Задаете аргументы(лучше сначала пользоваться справкой, прилагаемой к надстройке, чтобы задавать аргументы правильно) и жмете Ок. Функция в ячейке. Если все верно введено — увидите результат. Если результатом будет ошибка — проверьте сначала верно ли указаны все аргументы(например не указано ли вместо номер столбца его буква или диапазон ячеек).

Скачать надстройку:

  FIFO_LIFO_addin.zip (83,1 KiB, 4 749 скачиваний)

Надстройка распространяется бесплатно с открытыми исходными кодами: изучайте коды, алгоритмы, правьте коды под себя.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

Задача  посчитать остатки товара по каждому виду на текущую дату при этом цена продажи (операция продажа) не имеет никакого значения, списывается в данном случае товар по цене первого по времени прихода , пока он не кончится , потом вторго и т.д. В результате надо посчитать кол-во единиц остатка и их общую себестоимость на Дату.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

Господа спецы помогите девушке плиз , тут похоже макрос нужен формулами у меня не получается.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

Господа специалисты, срочно нужна ваша помощь в решении этого вопроса.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 02:07}{thema=}{post}Написал функцию(FIFO). В файле описано подробней. Будут вопросы — пишите.{/post}{/quote}  
Ага а как стоимость остатка товара на складе подсчитать? Красненькие столбцы?

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 02:23}{thema=}{post}Я именно над этим сейчас работаю. Не совсем понял как именно подсчитывать…{/post}{/quote}  
Насколько я понимаю метод ФИФО первым уходит товар который первым поступил , соответственно расход минусует первое поступление до 0, и переходит к следующему товар Б на 6/10 это 1 по 3 (4-3 продали) + 1 по 2 итого на  5 рублей товара . Пример не очень уудачный .. мне просто эта тема очень интересна

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=26.02.2009 02:23}{thema=}{post}Я именно над этим сейчас работаю. Не совсем понял как именно подсчитывать…{/post}{/quote  

  Большое Вам спасибо, но мне необходимо подсчитать стоимость остатка на конец каждого дня. Стоимость расчитывается по методу FIFO — First In First Out.  
Т.е. необходимо автоматизировать «Очередь», а именно: при реализации конкретного наименования товара, со склада списывается товар первый поступивший товар, потом второй и т.д.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=26.02.2009 02:07}{thema=}{post}Написал функцию(FIFO). В файле описано подробней. Будут вопросы — пишите.{/post}{/quote}  

  Уважаемый Прайст, Вы все же поможете мне решить задачу по определению стоимости?    
Мне очень, очень, очень нужно.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 04:46}{thema=}{post}Вот. Условия те же. Добавил функцию подсчета сумм. Проверяйте.{/post}{/quote}  
Блеск вс е точно по моему а можно дин диапазоны использовать в ней или только абсолютные ссылки ?

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 04:57}{thema=}{post}Пробуйте, как и с любой функцией должно получиться — но…{/post}{/quote}  
получилось с динамическим тоже спасибо … надо зарегистрировать Ваше ноу хау.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 04:46}{thema=}{post}Вот. Условия те же. Добавил функцию подсчета сумм. Проверяйте.{/post}{/quote}  
Не логика не та не работает функция она должна списывать по цене закупки а не продажи… минусов не должно быть

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 06:00}{thema=}{post}Микки — ты за проверяющего. Давай ломай дальше функцию, ищи косяки. :-){/post}{/quote}  
мне просто самому это нужно позарез .. теперь похоже все так.. но как это сделано…Спасибо .. дама сама скажет надеюсью.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 06:00}{thema=}{post}Микки — ты за проверяющего. Давай ломай дальше функцию, ищи косяки. :-){/post}{/quote}  
не опять сломал все … по товару А

 

Igor67

Пользователь

Сообщений: 3729
Регистрация: 21.12.2012

Имхо, но надо просто делать доп столбец и потихонько макросом «списывать» остатки, в верхней строчке. Возможно, как только остаток =0, строку можно в архив, на другой лист. А в конце дня просто сводной остаток на дату снимать. Как только будет пропуск — можно косячок получить.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=26.02.2009 06:00}{thema=}{post}Микки — ты за проверяющего. Давай ломай дальше функцию, ищи косяки. :-){/post}{/quote}  
А-а-а сказали архангельские лесорубы (анекдот) ..Вас видимо путает цена продажи на мой взгляд она просто лишняя тут .. ффактически это должна быть цена списания товар по пресловутому ФИФО.

 

{quote}{login=Микки}{date=27.02.2009 09:18}{thema=Re: }{post}{quote}{login=The_Prist}{date=26.02.2009 06:00}{thema=}{post}Микки — ты за проверяющего. Давай ломай дальше функцию, ищи косяки. :-){/post}{/quote}  
А-а-а сказали архангельские лесорубы (анекдот) ..Вас видимо путает цена продажи на мой взгляд она просто лишняя тут .. ффактически это должна быть цена списания товар по пресловутому ФИФО.{/post}{/quote}  

  Я на цену продажи даже не обращаю внимания. Просто надо попробовать учесть все варианты.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

Всем большое спасибо за участие в решении моей проблемы. Но все же очень хочется достичь правильного результата. Это возможно?

 

{quote}{login=Stepa}{date=27.02.2009 09:27}{thema=}{post}Всем большое спасибо за участие в решении моей проблемы. Но все же очень хочется достичь правильного результата. Это возможно?{/post}{/quote}  

  Щаз именно над этим работаю.  
Присоединяйтесь к выявлению и решению проблем.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=}{date=27.02.2009 09:48}{thema=Re: }{post}{quote}{login=Stepa}{date=27.02.2009 09:27}{thema=}{post}Всем большое спасибо за участие в решении моей проблемы. Но все же очень хочется достичь правильного результата. Это возможно?{/post}{/quote}  

  Щаз именно над этим работаю.  
Присоединяйтесь к выявлению и решению проблем.{/post}{/quote}  

  Дальше написания формулы по расчету количества у меня дело не пошло, потому надеюсь на Вас.

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=27.02.2009 01:11}{thema=Re: }{post}{quote}{login=The_Prist}{date=27.02.2009 01:09}{thema=}{post}Очередная доработка.{/post}{/quote}  

  Я еще критерий добавил — Qantity: Количество оставшегося товара.  
Выбрать кол-во товара, рассчитанного функцией FIFO_Count.{/post}{/quote}  

  Ураа, большое спасибо. Смотрю.

 

Микки

Пользователь

Сообщений: 3280
Регистрация: 24.12.2012

{quote}{login=The_Prist}{date=27.02.2009 01:11}{thema=Re: }{post}{quote}{login=The_Prist}{date=27.02.2009 01:09}{thema=}{post}Очередная доработка.{/post}{/quote}  

  Я еще критерий добавил — Qantity: Количество оставшегося товара.  
Выбрать кол-во товара, рассчитанного функцией FIFO_Count.{/post}{/quote}  
Ур-р-рр-а заработало Прайст вы гений…. но формула не персчитывается при обновленни данных надо протягивать это почемУ?

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=27.02.2009 01:11}{thema=Re: }{post}{quote}{login=The_Prist}{date=27.02.2009 01:09}{thema=}{post}Очередная доработка.{/post}{/quote}  

  Я еще критерий добавил — Qantity: Количество оставшегося товара.  
Выбрать кол-во товара, рассчитанного функцией FIFO_Count.{/post}{/quote}  

  Prist, скажите, пожалуйста, почему не меняется кол-во и соответственно стоимость если я меняю кол-во в основной таблице?

 

Stepa

Пользователь

Сообщений: 17
Регистрация: 01.01.1970

{quote}{login=The_Prist}{date=27.02.2009 01:35}{thema=}{post}Особенность пользовательских функций. Не всегда рассчитываются автоматом. Просто скопируйте формулу в одной ячейке и протяните по всем. Они пересчитаются.{/post}{/quote}  

  Ага, поняла. Вобщем все просто супер! Буду пользовать. Еще раз спасибо.

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Чтобы пересчитывались ячейки, от которых зависит результат, достаточно в декларации функции добавить последний виртуальный параметр ParamArray Dependences():  

  Function FIFO_Count(MyDate, Criteria, DateRange, ParamArray Dependences())  
‘… (все что было раньше)  
End Function  

  Function FIFO_Summ(MyDate, Criteria, DateRange, Qantity, ParamArray Dependences())  
‘… (все что было раньше)  
End Function  

  А в вызове функции добавить диапазоны ячеек, изменения которых должны вызывать пересчет функции.  

  Например, так можно добавить автопересчет при изменении ячеек номенклатуры и количества С3:D10:  
=FIFO_Count(H3;$I$1;$A$3:$A$10;С3:D10)  
или так:  
=FIFO_Count(H3;$I$1;$A$3:$A$10;С3:С10;D3:D10)  

  А здесь добавлены зависимости диапазона ячеек от номенклатуры C3:C10 до стоимости F3:F10:  
=FIFO_Summ(H3;$I$1;$A$3:$A$10;O3;C3:F10)  
или можно ограничиться только ячейками номенклатуры C3:C10 и стоимости F3:F10:  
=FIFO_Summ(H3;$I$1;$A$3:$A$10;O3;C3:C10;F3:F10)

 

{quote}{login=ZVI}{date=27.02.2009 10:30}{thema=Как добавить автопересчет в пользовательскую функцию}{post}Чтобы пересчитывались ячейки, от которых зависит результат, достаточно в декларации функции добавить последний виртуальный параметр ParamArray Dependences(){/post}{/quote}  

  Спасибо за полезную (думаю не только мне) информацию!

 

{quote}{login=The_Prist}{date=27.02.2009 01:09}{thema=}{post}Очередная доработка.{/post}{/quote}  

  Добрый вечер, не могли бы вы пояснить макрос комментариями, что куда и зачем пишется, чтобы понять используемые объекты.  
Спасибо.

 

Max

Пользователь

Сообщений: 61
Регистрация: 01.01.1970

Господа, искренне благодарю! Разобрался, адаптировал под себя, все отлично. Кроме одного: быстродействие на больших объемах данных оставляет желать лучшего. Подскажите как можно ускорить функцию? Первое, что приходит на ум — это построить логику так, чтобы получать данные в один проход по циклу вместо двух (например использовать массивы). Второе — это вообще отказать от цикла и переходить по артикулам с помощью поиска, например. Насколько это возможно и целесообразно?

 

Max

Пользователь

Сообщений: 61
Регистрация: 01.01.1970

Т.е. вариант:  

  В одном цикле проходим по всем записям и сохраняем данные по нужному артикулу в массив. Потом запускаем цикл по массиву.  

  будет быстрее текущего варианта?  

  А вариант:  

  Заменить оба цикла на перебор значений по артикулу с помощью Find.  

  будет медленнее всех?  

  Я просто с VBA на Вы, кодить могу, а вот понять на что повлияет выбор того или иного варианта не знаю как. Кодить все варианты, чтобы сравнить не хочется (опять же потому что с VBA на Вы). :)

 

Igor67

Пользователь

Сообщений: 3729
Регистрация: 21.12.2012

#28

13.12.2010 21:52:40

Попробуйте вариант FIFO_Count() на массиве.  
Еще, говорят, для убыстрения кода целесообразно не использовать and при проверке. а делить условия и проверять их по очереди.  

  Function FIFO_Count(MyDate, Criteria, DateRange As Range)  
   Dim arrDate(), i As Long, arrCriteria(), arrValue()  
   arrDate = DateRange.Value  
   arrCriteria = DateRange.Offset(0, 2).Value  
   arrValue = DateRange.Offset(0, 3).Value  
   iCount = 0  
   For i = 1 To UBound(arrDate)  
       If DateValue(arrDate(i, 1)) <= DateValue(MyDate) Then  
           If Criteria = arrCriteria(i, 1) Then  
               iCount = iCount + arrValue(i, 1)  
           End If  
       End If  
   Next  
   FIFO_Count = iCount  
End Function

I need to create a fifo function for price calculation.

I have a table with the following layout:

Purchase_date   Quantity  Purchase_Price 
----------------------------------------
2011-01-01      1000      10
2011-01-02      2000      11
......

Sale_date       Quantity  Costprice
----------------------------------------
2011-02-01      50        =fifo_costprice(...

the Fifo formula works like:

fifo_costprice(Q_sold_to_date as float, Quantity_purchased as range
               , Purchase_Prices as range) as float

How do I do this in Excel VBA?

Community's user avatar

asked Jul 20, 2011 at 12:56

Johan's user avatar

Here’s what I came up with to start, it doesn’t do any error checking and date matching, but it works.

Public Function fifo(SoldToDate As Double, Purchase_Q As Range, _ 
                     Purchase_price As Range) As Double
Dim RowOffset As Integer
Dim CumPurchase As Double
Dim Quantity As Range
Dim CurrentPrice As Range

  CumPurchase = 0
  RowOffset = -1
  For Each Quantity In Purchase_Q
    CumPurchase = CumPurchase + Quantity.Value
    RowOffset = RowOffset + 1
    If CumPurchase > SoldToDate Then Exit For
  Next
  'if sold > total_purchase, use the last known price.
  Set CurrentPrice = Purchase_price.Cells(1, 1).offset(RowOffset, 0)
  fifo = CurrentPrice.Value
End Function

answered Jul 20, 2011 at 12:58

Johan's user avatar

JohanJohan

74.3k23 gold badges190 silver badges316 bronze badges

I had a similar problem finding the «most recent exchange rate» via VBA. This is my code, maybe it can inspire you …

Function GetXRate(CurCode As Variant, Optional CurDate As Variant) As Variant
Dim Rates As Range, chkDate As Date
Dim Idx As Integer

    GetXRate = CVErr(xlErrNA)                                   ' set to N/A error upfront
    If VarType(CurCode) <> vbString Then Exit Function          ' if we didn't get a string, we terminate
    If IsMissing(CurDate) Then CurDate = Now()                  ' if date arg not provided, we take today
    If VarType(CurDate) <> vbDate Then Exit Function            ' if date arg provided but not a date format, we terminate

    Set Rates = Range("Currency")                               ' XRate table top-left is a named range
    Idx = 2                                                     ' 1st row is header row
                                                                ' columns: 1=CurCode, 2=Date, 3=XRate

    Do While Rates(Idx, 1) <> ""
        If Rates(Idx, 1) = CurCode Then
            If Rates(Idx, 2) = "" Then
                GetXRate = Rates(Idx, 3)                        ' rate without date is taken at once
                Exit Do
            ElseIf Rates(Idx, 2) > chkDate And Rates(Idx, 2) <= CurDate Then
                GetXRate = Rates(Idx, 3)                        ' get rate but keep searching for more recent rates
                chkDate = Rates(Idx, 2)                         ' remember validity date
            End If
        End If
        Idx = Idx + 1
    Loop
End Function

It’s more a classical loop construct with a loop index (Idx as Integer) and two exit criteria, so I don’t need to go across all rows under all circumstances.

answered Jul 21, 2011 at 8:16

MikeD's user avatar

MikeDMikeD

8,8612 gold badges28 silver badges50 bronze badges

Many years ago on a friend’s father asked me to create a First in First Out FIFO calculator for stocks which he held.  It appears the taxation on stock purchases becomes increasingly difficult when you are purchasing the same stock multiple times.  Tracking the P&L on a stock becomes difficult based on a first in first out (FIFO) basis. This article will focus on some solutions to the FIFO conundrum.

My understanding of FIFO is that goods purchased are sold bases on the price of the earliest purchased product.  I will use a simple example;

We buy 2 stocks for a price of $10 each.  On Tuesday we purchase 2 more stocks for $15 each.  Now on Wednesday we sell 3 of the stocks for $17 each.  We need to work out the profit or loss for taxation purposes.  If we use FIFO we have a profit of:

17 * 2 — 10 * 2 + 1 * 17 — 1 * 15

or

34 — 20 + 17 — 15

=$16

So we have made a $16 profit according to FIFO.  This becomes more and more difficult to track the more items which are purchased and sold for different prices.

 The following is a more complex FIFO calculation based on the attached file.

This is where Excel VBA can help.  The following is a very handy FIFO procedure which will sort the closing price for a FIFO calculation.

FIFO Function in Excel

While working with the CPA for a webinar I extended the FIFO calculation into a custom function.  It is quite straight forward.  Here is some raw data, we can use this data to calculate FIFO.  The custom function will do the work for us.

Now let’s say we need to calculate the FIFO on the following:

Oct   USB Stick    420    = ??????

SO we need to work out what the cost of goods sold is for 420 items at 4 different price points.

80 x 1.10 = $88
200 x 8 1.05 = $210
120 x 1.10 = $132
20 x 1.03 = $20.60

Total  = $450.60

Once again performing the FIFO calculation manually is a laborious task, especially if you have to do this for multiple items or multiple dates.

Here is a solution using a custom FIFO function.

The following is the FIFO formula:

=FIFO(ExA!$C$2:$D$6,C2)

Where C2:D6 is the quantity and the cost (in that order).  And C2 contains the FIFO quantity sold.

The attached file shows basic and more advanced FIFO calculation.  It takes the simple example above a step further.  It is very useful and can be extended a lot further if need be.  The FIFO function provided above is a small glimpse into the world of the First in First Out inventory calculation.

The above is an example of the results from the file. It takes the concept a step further to calculate the value of the remaining inventory. It shows how the FIFO Function can be extended to multiple criteria and products.


Автор:

John Stephens


Дата создания:

2 Январь 2021


Дата обновления:

16 Апрель 2023


Урок 4. Формулы Excel для начинающих

Видео: Урок 4. Формулы Excel для начинающих

Содержание

  • Шаг 1
  • Шаг 2
  • Шаг 3
  • Шаг 4
  • Шаг 5
  • Шаг 6
  • Шаг 7

Бухгалтеры используют электронные таблицы и специальные методы для оценки и отслеживания запасов.

Бухгалтерский термин FIFO относится к методу управления активами инвентаризации и оценки активов «первым пришел — первым вышел». В отличие от его родственной методологии «первым пришел — первым вышел», этот термин определяет, что первые продукты, внесенные в инвентарь, являются первыми предметами, которые были изъяты. В периоды роста цен это означает, что более старые запасы — первый инвентарь в наличии — имеют более низкую стоимость в бухгалтерских книгах, оставляя более новые и более дорогие запасы в балансе. Это приводит к снижению себестоимости проданных товаров и увеличению чистой прибыли. По налоговым соображениям IRS позволяет компаниям рассчитывать только на один метод оценки без переключения между ними в течение года без разрешения.

Шаг 1

Просмотрите уравнение инвентаризации, чтобы понять, как настроить электронную таблицу для FIFO. Уравнение: Начальный запас + Чистые покупки — Стоимость проданных товаров = Конечный запас. Метод FIFO означает, что первый продукт, который входит в инвентарь, является первым проданным продуктом.

Шаг 2

Откройте электронную таблицу Excel. Создайте столбцы со следующими заголовками: «Начальный запас», «Чистые закупки», «Стоимость проданных товаров» и «Конечный запас».

Шаг 3

Введите сумму вашего начального инвентаря. Допустим, у вас есть кофейня, и на следующий день вы производите 100 чашек кофе, которые продаются по цене от 1 до 100 долларов, и продаются по средней цене 2 доллара каждая.

Шаг 4

Пометьте первый ряд под заголовками столбцов как «День 1». Начальная стоимость инвентаря для первого дня — 100 чашек кофе по цене 1 доллар. Общая стоимость начальной стоимости — 100 долларов. Обозначьте вторую строку «День 2», и теперь это значение составляет 200 долларов или 2 раза по 100.

Шаг 5

Добавьте количество покупок, которые вы делаете, чтобы пополнить свой инвентарь в таблицу. Допустим, вы покупаете 100 чашек кофе по цене 3 доллара за чашку. Введите эту сумму во втором столбце как чистые покупки.

Шаг 6

Введите стоимость первых чашек кофе в качестве стоимости товаров, проданных в следующем столбце. Вы продали 200 чашек кофе. Первые 100 чашек кофе стоят 100 долларов, а следующие 100 — 2 доллара. Общая стоимость товаров, проданных за эти дни, составляет 300 долларов.

Шаг 7

Рассчитайте конечный запас, используя уравнение, введенное в поле электронной таблицы для окончания запаса, на основе заголовка каждого столбца: Начальный запас + Чистые покупки — Стоимость проданных товаров = Конечный запас. Это должно быть $ 300 + $ 300 — $ 300 = $ 300.

Наконечник

Добавив формулу Excel, которая соответствует перечисленным ячейкам, вы можете скопировать и вставить формулу в столбец «Конечный инвентарь», чтобы вам не приходилось каждый раз заново его создавать.

Предупреждение

Используйте функцию защиты в Excel, чтобы защитить формулу от случайных изменений.

Формула остатка задолженности по FIFO

Mishas

Дата: Среда, 01.07.2015, 17:29 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Добрый день.
Прошу помочь с формулой для расчёта остатка задолженности по принципу FIFO.
Мы имеем:
-общую сумму задолженности (В3),
-Планируемые суммы оплаты на дату (H3, P3, V3, AC3, AJ3)
Что должно быть в результате:
При внесении вручную суммы оплаты (С3), необходимо, чтобы эта цифра высчитывалась из ячеек (H3, P3, V3, AC3, AJ3) по принципу FIFO.
Т.е оплатили 2000 — соответственно H3=0, P3=2513,63

К сообщению приложен файл:

4460244.xlsx
(12.7 Kb)

 

Ответить

Pelena

Дата: Среда, 01.07.2015, 17:45 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mishas

Дата: Среда, 01.07.2015, 17:54 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Спасибо, но вопрос не решен. У меня всё проще. Не обязательно привязываться к ФИФО.
Вопрос по-другому:
Как рассчитать значение при условии?

 

Ответить

Макрописец

Дата: Среда, 01.07.2015, 18:12 |
Сообщение № 4

Группа: Заблокированные

Ранг: Форумчанин

Сообщений: 128


Репутация:

7

±

Замечаний:
100% ±


Excel 2010

Как рассчитать значение при условии?

Если отталкиваться от ФИФО не обязательно — тогда какое условие?


ТЕРПЕНИЕ И ТРУД — ВСЁ ПЕРЕТРУТ!

 

Ответить

Pelena

Дата: Среда, 01.07.2015, 18:18 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Планируемые суммы оплаты откуда берутся? Если проставляются вручную, то формулами можно посчитать в доп. строке

Код

=МИН(МАКС(H3-$C$3+СУММ($E$3:G3);0);H3)

К сообщению приложен файл:

7819642.xlsx
(13.0 Kb)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mishas

Дата: Четверг, 02.07.2015, 09:17 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Pelena, спасибо.
Практически то, что я хотел.
Сейчас попробую сам ещё усовершенствовать, так как клиентов много и формулу надо протягивать по столбцам. Придётся добавлять столбцы.

 

Ответить

AlexM Дата: Суббота, 12.01.2013, 15:16 | Сообщение № 2

Ответить

RAN Дата: Суббота, 12.01.2013, 15:29 | Сообщение № 3
Быть или не быть, вот в чем загвоздка!

Ответить

MCH Дата: Воскресенье, 13.01.2013, 03:37 | Сообщение № 4
Муля2010 Дата: Воскресенье, 13.01.2013, 19:03 | Сообщение № 5

Добрый день!
Ребят, LIFO метод означает: «последним пришел, первым ушел».
.Пример расчета, есть вот здесь : http://azbukaucheta.com/metod-spisaniya-lifo/
И здесь: http://kvod.narod.ru/Fifo-lifo.htm

И если это так, тогда если я не ошибаюсь, вот эта часть формулы B2*F2+(C2-B2)*E2, должна быть такого вида С2*F2 + ABS(B2-C2)*E2. То есть, сначала списываем всю последнюю партию поступившего товара, а недостающую часть (500 единиц) для списания, берем из первой партии товара.

Добрый день!
Ребят, LIFO метод означает: «последним пришел, первым ушел».
.Пример расчета, есть вот здесь : http://azbukaucheta.com/metod-spisaniya-lifo/
И здесь: http://kvod.narod.ru/Fifo-lifo.htm

И если это так, тогда если я не ошибаюсь, вот эта часть формулы B2*F2+(C2-B2)*E2, должна быть такого вида С2*F2 + ABS(B2-C2)*E2. То есть, сначала списываем всю последнюю партию поступившего товара, а недостающую часть (500 единиц) для списания, берем из первой партии товара. Муля2010

Сообщение Добрый день!
Ребят, LIFO метод означает: «последним пришел, первым ушел».
.Пример расчета, есть вот здесь : http://azbukaucheta.com/metod-spisaniya-lifo/
И здесь: http://kvod.narod.ru/Fifo-lifo.htm

И если это так, тогда если я не ошибаюсь, вот эта часть формулы B2*F2+(C2-B2)*E2, должна быть такого вида С2*F2 + ABS(B2-C2)*E2. То есть, сначала списываем всю последнюю партию поступившего товара, а недостающую часть (500 единиц) для списания, берем из первой партии товара. Автор — Муля2010
Дата добавления — 13.01.2013 в 19:03

Муля2010 Дата: Воскресенье, 13.01.2013, 19:28 | Сообщение № 6
Муля2010 Дата: Воскресенье, 13.01.2013, 20:42 | Сообщение № 7
MCH Дата: Воскресенье, 13.01.2013, 21:01 | Сообщение № 8
Муля2010 Дата: Воскресенье, 13.01.2013, 21:25 | Сообщение № 9
Муля2010 Дата: Воскресенье, 13.01.2013, 22:08 | Сообщение № 10
Муля2010 Дата: Понедельник, 14.01.2013, 00:07 | Сообщение № 11
MCH Дата: Понедельник, 14.01.2013, 02:30 | Сообщение № 12

Откуда у Вас взялась цена 53,33 ее ведь не было ни в одном из приходов?

Мои рассуждения:
Период 1
На остатках 1500ед по цене 50 и было поступление 1500ед по 55, использовано 2000ед, при этом по методу LIFO списался весь приход 1500*55 и 500ед начального остататка
Таким образом произошло списание 1500*55+500*50 = 107500, остаток — 1000 ед по 50 (первоначального остатка)

Пероиод 2
Поступило 2500ед по цене 60, использовано 2000ед, все списание происходит за счет прихода — 2000*60 = 120000, на остатках остается 1500ед (1000ед из первоначального остатка по цене 50 и 500ед из второго прихода по цене 60)

Период 3
Поступило 2500 ед. по цене 70, списание 3500 ед: 2500ед*70 — из третьего прихода + 500ед*60 (остаток из второго прихода равен 500, остальное уже было израсходовано) + 500ед*50 (из первоначального остатка)
Таким образом, стоимость списания в третьем периоде равен: 2500*70+500*60+500*50 = 230000
В результате остаток после всех списаний — 500ед * 50 (из первоначального остатка)

Откуда у Вас взялась цена 53,33 ее ведь не было ни в одном из приходов?

Мои рассуждения:
Период 1
На остатках 1500ед по цене 50 и было поступление 1500ед по 55, использовано 2000ед, при этом по методу LIFO списался весь приход 1500*55 и 500ед начального остататка
Таким образом произошло списание 1500*55+500*50 = 107500, остаток — 1000 ед по 50 (первоначального остатка)

Пероиод 2
Поступило 2500ед по цене 60, использовано 2000ед, все списание происходит за счет прихода — 2000*60 = 120000, на остатках остается 1500ед (1000ед из первоначального остатка по цене 50 и 500ед из второго прихода по цене 60)

Период 3
Поступило 2500 ед. по цене 70, списание 3500 ед: 2500ед*70 — из третьего прихода + 500ед*60 (остаток из второго прихода равен 500, остальное уже было израсходовано) + 500ед*50 (из первоначального остатка)
Таким образом, стоимость списания в третьем периоде равен: 2500*70+500*60+500*50 = 230000
В результате остаток после всех списаний — 500ед * 50 (из первоначального остатка) MCH

Откуда у Вас взялась цена 53,33 ее ведь не было ни в одном из приходов?

Мои рассуждения:
Период 1
На остатках 1500ед по цене 50 и было поступление 1500ед по 55, использовано 2000ед, при этом по методу LIFO списался весь приход 1500*55 и 500ед начального остататка
Таким образом произошло списание 1500*55+500*50 = 107500, остаток — 1000 ед по 50 (первоначального остатка)

Пероиод 2
Поступило 2500ед по цене 60, использовано 2000ед, все списание происходит за счет прихода — 2000*60 = 120000, на остатках остается 1500ед (1000ед из первоначального остатка по цене 50 и 500ед из второго прихода по цене 60)

Период 3
Поступило 2500 ед. по цене 70, списание 3500 ед: 2500ед*70 — из третьего прихода + 500ед*60 (остаток из второго прихода равен 500, остальное уже было израсходовано) + 500ед*50 (из первоначального остатка)
Таким образом, стоимость списания в третьем периоде равен: 2500*70+500*60+500*50 = 230000
В результате остаток после всех списаний — 500ед * 50 (из первоначального остатка) Автор — MCH
Дата добавления — 14.01.2013 в 02:30

Муля2010 Дата: Понедельник, 14.01.2013, 02:55 | Сообщение № 13

Смотрите ячейки Е4 и L4 на Листе3

Смотрите ячейки Е4 и L4 на Листе3 Муля2010

Смотрите ячейки Е4 и L4 на Листе3 Автор — Муля2010
Дата добавления — 14.01.2013 в 02:55

Муля2010 Дата: Понедельник, 14.01.2013, 03:34 | Сообщение № 14

Нет! Должно быть вот так
2500*70+1000 *53,333333 = 228333,33
а не так, как у вас. Уточняю, сейчас речь, идет про ЛИФО.

Далее, ваши расуждения по первым двум периодам, правильные.
А вот третий период нет. Попробую пояснить почему.
Для этого с начала приведу сам расчет.

На начало 3-его периода у нас было входящего остатка (1500*53,33333). Как он расчитывается, напишу ниже.
Далее, поступило в 3-ем периоде (2500*70). Но, списать нам нужно в этом периоде 3500 единиц , по расчетной (сложной) цене. Которую я , также расшифрую ниже.

Значит , с начала мы берем все (2500*70) из последнего поступления, плюс добавляем к ним недостающих (1000*53,33333) , из входящего остатка на начало 3-его периода и получаем количество и сумму для списания в этом периоде.
Следовательно, в исходящем остатке на конец 3-го периода, у нас остается (500*53,3333).
И все, расчет закончен.

Что же касается ваших цифр (500*60+500*50) , то они уже сидят (то есть, уже учтены) во входящем остатке на начало 3-его периода (1500*53,33333). .

Как мы получили, этот входящий остаток на начало 3-его периода?

А получити мы его из двух цен первого и второго периодов (1000*50+500*60)=80000, вот на эту вот суму денег.
Далее, если разделим эти деньги на общее количество входящего остатка (80000 : 1500= 53, 33333) , то получим расчетную среднюю цену входящего остатка. Которая и указана автором темы, у выше названых мною ячейках.
[Надеюсь теперь вы понимаете откуда она взялася, эта «хитрая» цена!

Нет! Должно быть вот так
2500*70+1000 *53,333333 = 228333,33
а не так, как у вас. Уточняю, сейчас речь, идет про ЛИФО.

Далее, ваши расуждения по первым двум периодам, правильные.
А вот третий период нет. Попробую пояснить почему.
Для этого с начала приведу сам расчет.

На начало 3-его периода у нас было входящего остатка (1500*53,33333). Как он расчитывается, напишу ниже.
Далее, поступило в 3-ем периоде (2500*70). Но, списать нам нужно в этом периоде 3500 единиц , по расчетной (сложной) цене. Которую я , также расшифрую ниже.

Значит , с начала мы берем все (2500*70) из последнего поступления, плюс добавляем к ним недостающих (1000*53,33333) , из входящего остатка на начало 3-его периода и получаем количество и сумму для списания в этом периоде.
Следовательно, в исходящем остатке на конец 3-го периода, у нас остается (500*53,3333).
И все, расчет закончен.

Что же касается ваших цифр (500*60+500*50) , то они уже сидят (то есть, уже учтены) во входящем остатке на начало 3-его периода (1500*53,33333). .

Как мы получили, этот входящий остаток на начало 3-его периода?

А получити мы его из двух цен первого и второго периодов (1000*50+500*60)=80000, вот на эту вот суму денег.
Далее, если разделим эти деньги на общее количество входящего остатка (80000 : 1500= 53, 33333) , то получим расчетную среднюю цену входящего остатка. Которая и указана автором темы, у выше названых мною ячейках.
[Надеюсь теперь вы понимаете откуда она взялася, эта «хитрая» цена! Муля2010

Нет! Должно быть вот так
2500*70+1000 *53,333333 = 228333,33
а не так, как у вас. Уточняю, сейчас речь, идет про ЛИФО.

Далее, ваши расуждения по первым двум периодам, правильные.
А вот третий период нет. Попробую пояснить почему.
Для этого с начала приведу сам расчет.

На начало 3-его периода у нас было входящего остатка (1500*53,33333). Как он расчитывается, напишу ниже.
Далее, поступило в 3-ем периоде (2500*70). Но, списать нам нужно в этом периоде 3500 единиц , по расчетной (сложной) цене. Которую я , также расшифрую ниже.

Значит , с начала мы берем все (2500*70) из последнего поступления, плюс добавляем к ним недостающих (1000*53,33333) , из входящего остатка на начало 3-его периода и получаем количество и сумму для списания в этом периоде.
Следовательно, в исходящем остатке на конец 3-го периода, у нас остается (500*53,3333).
И все, расчет закончен.

Что же касается ваших цифр (500*60+500*50) , то они уже сидят (то есть, уже учтены) во входящем остатке на начало 3-его периода (1500*53,33333). .

Как мы получили, этот входящий остаток на начало 3-его периода?

А получити мы его из двух цен первого и второго периодов (1000*50+500*60)=80000, вот на эту вот суму денег.
Далее, если разделим эти деньги на общее количество входящего остатка (80000 : 1500= 53, 33333) , то получим расчетную среднюю цену входящего остатка. Которая и указана автором темы, у выше названых мною ячейках.
[Надеюсь теперь вы понимаете откуда она взялася, эта «хитрая» цена! Автор — Муля2010
Дата добавления — 14.01.2013 в 03:34

Источник

Adblock
detector


Добрый день, уважаемые форумчане!

Требуется Ваша помощь в решении одной задачи. Задача заключается в нахождении формулы для определения количественного и стоимостного остатка товара по методу ФИФО (First In First Out), который используется в бухгалтерии.

Допустим, как показано в моем примере на листе «операции» (файл ниже), 01.01.2012 було куплено:
10 единиц продукта 1 общей стоимостью 300 руб. (30 руб./ед.)
20 единиц продукта 2 общей стоимостью 440 руб. (22 руб./ед.)
10 единиц продукта 3 общей стоимостью 70 руб. (7 руб./ед.)

Таким образом, если высчитывать остаток на 01.01.2012, он составит: 40 единиц товара общей стоимостью в 810 руб.

02.01.2012 прошли также операции, которые увеличили остаток (покупка). Но также были и операции, которые этот остаток уменьшили (списание, продажа). Эти операции показаны в колонке «кол-во» с отрицательным значением. Сущность метода ФИФО заключается в том, что при уменьшении товара, первым уходит товар, который был куплен ранее, за ним следующий и так далее… В данном методе цена продажи не имеет значения, важна только закупочная цена.

Покажу на примере продукта 2:

01.01.2012:
-остаток 20 ед. общей стоимостью 440 руб. (22 руб./ед.)

02.01.2012:
-куплено еще 20 ед. общей стоимостью 880 руб. (44 руб./ед.)
-остаток стал 40 ед. общей стоимостью 1320 руб. (20 по 22 руб., 20 по 44 руб.)
-продано 15 ед.; вычитается продукт, купленный ранее всех, т.е. вычитается 15 ед. по цене 22 руб./ед.
-остаток после всех операций составит: 25 ед. общей стоимостью 990 руб. (5 ед. по цене 22 руб., 20 по 44 руб.)

03.01.2012:
-куплено еще 15 ед. общей стоимостью 75 руб. (5 руб./ед.)
-остаток стал 40 ед. общей стоимостью 1065 руб. (5 ед. по 22 руб., 20 ед. по 44 руб., 15 ед. по 5 руб.)
-списано (убыло по негодности) 2 ед. товара
-остаток после всех операций составит: 38 ед. общей стоимостью 1021 руб. (3 ед. по цене 22 руб., 20 ед. по 44 руб., 15 ед. по 5 руб.)

Буду Вам очень признателен, если получится данные расчеты (кол-во и стоимость остатка) представить в виде формулы. То, что должно получиться в итоге (для проверки) я прописал под итоговой таблицей в листе «остаток».

Заранее благодарю!

Понравилась статья? Поделить с друзьями:
  • Формула фильтр нет в excel
  • Формула фильтр в excel примеры
  • Формула фильтр в excel отсутствует
  • Формула фильтр в excel 2016
  • Формула физика для word