Академический Документы
Профессиональный Документы
Культура Документы
ПОДПИСЧИКОВ ЖУРНАЛА
«ФИНАНСОВЫЙ ДИРЕКТОР»
Об авторе ......................................................................................................... 6
Глава 1.
Организация управленческого учета в Excel
Зачем и когда организовывать управленческий
учет в Excel ............................ ............................................................................. 12
Глава 2.
Постановка бюджетирования в Excel
Как выглядит типовой алгоритм бюджетирования ............................. 70
Глава 3.
Финансовое моделирование и инвестиционный
анализ в Excel
Что такое финансовая модель и как ее организовать
в Excel . . . . . . ............................................................................................................. 104
Глава 4.
Решение типовых задач в Excel
Создание типовых документов ............. ...................................................... 154
Игорь Николаев,
финансовый директор компании «Арлифт»,
член экспертного совета журнала
«Финансовый директор»
Уважаемые коллеги!
Эта книга посвящена одному из важнейших инструментов работы
любого финансового директора – программе Microsoft Excel. Как ни
парадоксально, именно Excel, а не «1С», SAP, Oracle или иные специ-
ализированные финансовые программные продукты, является наи-
более мощным и эффективным инструментом в руках финансового
руководителя, способным на несколько порядков повысить качество
и результативность его работы. Причем это касается финансовых ди-
ректоров абсолютно всех компаний, вне зависимости от их размеров,
отраслевой принадлежности и технической оснащенности. Будучи
универсальным продуктом, обладающим сотнями и тысячами сфер
применения, именно в руках финансового директора Excel раскрыва-
ется в наиболее полной мере на фоне впечатляющих вычислительных
и визуальных возможностей, гибкости и масштабируемости. Финан-
совые модели, построенные в Excel, удобны и функциональны. Да что
там говорить, многим (в том числе и мне) они зачастую доставляют
чисто эстетическое наслаждение.
Если вы хотите, чтобы ваша компания была конкурентоспособна
и эффективна – вы должны использовать Excel. Если вы сами хотите
быть конкурентоспособны на рынке труда и уверены в собственной
эффективности и профессиональной состоятельности – вы должны
профессионально использовать Excel. Это аксиома, и я не вижу ни од-
ного исключения.
Но что это такое – профессиональное использование Excel? На-
верняка вы уже активно работаете в этой программе, но применяете
ли вы ее возможности хотя бы на 5 процентов? Сильно сомневаюсь.
Ведь дело не в том, чтобы обращаться к Excel с целью построения
простеньких табличек с минимумом формул. Excel способен на
такие вещи, о которых вы даже не подозреваете. Будучи мощным
и профессиональным, но всего лишь инструментом, Excel в эффек-
тивности сильно зависит от того, в насколько профессиональных
руках он находится.
При этом мало просто владеть всем инструментарием Excel, важ-
но уметь правильно организовать данные, правильно выстроить учет-
ные и аналитические модели, чтобы результат был максимальным.
Именно об этом мы и будем говорить на страницах этой книги – о пра-
вильном, грамотном и эффективном использовании всего многооб-
разия возможностей Excel, и именно этим данная книга отличается
от других книг по Excel, которые в большом количестве присутствуют
на рынке.
Я стремился максимизировать практическую ценность книги,
поэтому все задачи мы будем решать на конкретных сквозных при-
мерах, все учетные и аналитические системы мы будем создавать
с нуля, подробнейшим образом разбирая все аспекты их формиро-
Игорь Николаев,
финансовый директор компании «Арлифт»,
член экспертного совета журнала
«Финансовый директор»
13
Организация
ввода операций движения
денежных средств
15
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109;B4:B100000)
17
=МЕСЯЦ(B4)
19
Формирование отчета
о движении денежных средств
21
СУММЕСЛИМН(ДиапазонСуммирования;
ДиапазонУсловий1; Условие1;
[ДиапазонУсловий2; Условие2]; ...)
=СУММЕСЛИМН(Реестр!$B:$B;Реестр!$D:$D;$C6;
Реестр!$G:$G;D$3)*ЕСЛИ($A6="-";-1;1)
=СУММЕСЛИМН(Реестр!$B:$B;Реестр!$G:$G;L$3;
Реестр!$D:$D;$C50)*ЕСЛИ($A50="-";-1;1)
23
25
Sub DrillDown()
Dim R, C As Integer
R = ActiveCell.Column
C = ActiveCell.Row
If (R < 4) Or (R > 15) Or (C < 6) Or (C > 66) Then
MsgBox ("Выберите ячейку в табличной части для просмо-
тра ее детализации!")
Else
Sheets("Реестр").Select
ActiveSheet.Range("$A$3:$G$10000").AutoFilter Field:=4, _
Criteria1:=Sheets("ОДДС").Cells(C, 3).Value
ActiveSheet.Range("$A$3:$G$10000").AutoFilter Field:=7, _
Criteria1:=Format(R - 3, "00")
End If
End Sub
27
29
31
Формирование управленческого
баланса
Статьи баланса
Рассмотрим каждую статью баланса более подробно и попробуем по-
нять, из каких источников мы должны взять формирующие эти ста-
тьи данные.
33
35
Формулы расчета
После заполнения баланса на 01.01.15 нам остается заполнить фор-
мулы расчета каждой статьи баланса. Алгоритм формирования этих
формул представлен в табл. 2 на стр. 38.
Заполнив формулами столбец баланса, соответствующий 1 фев-
раля, мы можем скопировать эти формулы во все последующие
столбцы – все ссылки корректным образом сместятся, и баланс будет
правильно отображаться на каждую отчетную дату, как показано на
рис. 2 на стр.33.
Кстати, в данном примере хорошо видно, как повлияли на баланс
занесенные нами в реестр три операции начисления и выплаты зар-
платы сотрудникам. Начисление зарплаты в январе скорректиро-
вало сальдо взаиморасчетов с персоналом по состоянию на 1 февра-
ля с 750 470 до 925 470 рублей и уменьшило собственный капитал
с 5 298 356 до 5 123 356 рублей, а выплата зарплаты в феврале умень-
шила остаток денежных средств с 2 500 000 до 2 325 000 рублей и вер-
нула сальдо взаиморасчетов с персоналом к значению 750 470 рублей.
В обоих случаях равенство актива и пассива баланса сохраняется, то
есть формулы занесены правильно.
37
П О К А З АТ Е Л Ь А Л Г О Р И Т М РА С Ч Е ТА Ф О Р М УЛ А Н А 1 Ф Е В РА Л Я
П О К А З АТ Е Л Ь А Л Г О Р И Т М РА С Ч Е ТА Ф О Р М УЛ А Н А 1 Ф Е В РА Л Я
39
Формирование
дополнительных отчетов
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$F:$F;$A4;Реестр!$I:$I;1)
41
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$F:$F;$A4;Реестр!$H:$H;1)
=B4+C4-D4
43
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$J:$J;D$4;Реестр!$E:$E;
$C6)*ЕСЛИ($A6="-";-1;1)
45
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$A:$A;$A5;Реестр!$D:$D;
"Счет в ВТБ 24")+B4
47
49
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$I:$I;D$3;Реестр!$E:$E;
$C6)*ЕСЛИ($A6="-";-1;1)
=СУММЕСЛИМН(Реестр!$C:$C;Реестр!$I:$I;D$3;Реестр!$E:$E;
$C6;Реестр!$H:$H;"факт")*ЕСЛИ($A6="-";-1;1)
51
Организация импорта
данных из «1С»
53
55
Sub RegMake()
SheetOut.Range("A2:L10000").ClearContents
K=9
SheetOut.Cells(K + 1, 1).Value = K - 8
SheetOut.Cells(K + 1, 2).Value = CDate(SheetIn.Cells(K, 1))
SheetOut.Cells(K + 1, 13).Value = Month(CDate(SheetIn.
Cells(K, 1)))
If SheetIn.Cells(K, 6).Value = "51" Then
SheetOut.Cells(K + 1, 3).Value = - (-Format(CSng(SheetIn.
Cells(K,7).Value), "# ##0.00"))
SheetOut.Cells(K + 1, 10).Value = - (-Format(CSng(SheetIn.
Cells(K,7).Value), "# ##0.00"))
Else
SheetOut.Cells(K + 1, 3).Value =-Format(CSng(SheetIn.
Cells(K, 10).Value), "# ##0.00")
A1 = ""
A2 = ""
A3 = ""
B1 = ""
B2 = ""
B3 = ""
C1 = ""
C2 = ""
C3 = ""
S = SheetIn.Cells(K, 2).Value
BrakePos = InStr(S, Chr(10))
If BrakePos <> 0 Then
A1 = Left(S, BrakePos - 1)
A2 = Right(S, Len(S) - BrakePos)
End If
S = SheetIn.Cells(K, 4).Value
BrakePos = InStr(S, Chr(10))
If BrakePos = 0 Then
B1 = S
Else
B1 = Left(S, BrakePos - 1)
S = Right(S, Len(S) - BrakePos)
BrakePos = InStr(S, Chr(10))
If BrakePos = 0 Then
B2 = S
Else
B2 = Left(S, BrakePos - 1)
B3 = Right(S, Len(S) - BrakePos)
End If
End If
S = SheetIn.Cells(K, 5).Value
BrakePos = InStr(S, Chr(10))
57
If BrakePos = 0 Then
C1 = S
Else
C1 = Left(S, BrakePos - 1)
S = Right(S, Len(S) - BrakePos)
BrakePos = InStr(S, Chr(10))
If BrakePos = 0 Then
C2 = S
Else
C2 = Left(S, BrakePos - 1)
C3 = Right(S, Len(S) - BrakePos)
End If
End If
SheetOut.Cells(K + 1, 8).Value = A2
If SheetIn.Cells(K, 6).Value = "51" Then
SheetOut.Cells(K + 1, 6).Value = B2
SheetOut.Cells(K + 1, 7).Value = C1
Else
SheetOut.Cells(K + 1, 6).Value = C2
SheetOut.Cells(K + 1, 7).Value = B1
End If
K=K+1
Loop
SheetOut.Rows("2:9").Delete Shift:=xlUp
MsgBox ("Реестр банковских операций сформирован.")
End Sub
59
61
63
65
Дебет =СУММЕСЛИМН(Реестр!D:D;Реестр!B:B;A4)
Кредит =СУММЕСЛИМН(Реестр!D:D;Реестр!C:C;A4)
Сальдо конечное =B4+C4-D4
67
71
73
Автоматизация бюджетирования
центров финансовой
ответственности
75
77
=ЕСЛИ(C3="Пессимистичный";"$C:$C";ЕСЛИ(C3="Реалистичный";
"$D:$D";"$E:$E"))
=ЕСЛИ(ЕПУСТО($F$3);СУММЕСЛИМН(ДВССЫЛ("Реестр!"&$K$3);
Реестр!$F:$F;$C7;
Реестр!$I:$I;D$4);СУММЕСЛИМН(ДВССЫЛ("Реестр!"&$K$3);
Реестр!$F:$F;$C7;
Реестр!$I:$I;D$4;Реестр!$A:$A;"<="&Версия))*ЕСЛИ($A7="-";-1;1)
79
бюджета примет такой вид, как показано на рис. 5 на стр. 81. Значе-
ние по статье «Участие в выставках» автоматически изменится на
70 тыс. рублей. Теперь изменим версию бюджета с 01.01.2015 на более
позднюю, допустим, на 01.02.2015 (см. рис. 6).
Таким образом, все сценарии и все версии бюджета ЦФО в любых
их комбинациях доступны для просмотра сразу после заполнения ре-
естра плановых операций.
С данным файлом руководитель ЦФО будет работать на протяже-
нии всего отчетного года, внося по мере необходимости в него коррек-
тировки. В нем же он будет контролировать фактическое исполнение
бюджета, а также осуществлять план-фактный анализ. При этом ука-
занный файл следует разместить в файловой системе компании та-
ким образом, чтобы:
• руководитель ЦФО всегда имел к нему доступ;
• другие сотрудники такого доступа не имели (так как бюджет
ЦФО может содержать коммерческую тайну);
• данный файл был доступен финансовой службе, причeм как
для чтения, так и для записи, поскольку информация из него
будет перекачиваться в консолидированный бюджет, а факти-
ческие данные будут загружаться в него из файла управленче-
ского учeта.
81
Дополнительные возможности
бюджетов ЦФО
=ЕСЛИ(ЕПУСТО($F$3);СУММЕСЛИМН(ДВССЫЛ("Реестр!"&$K$3);
Реестр!$F:$F;$C$7;Реестр!$G:$G;
83
$C15;Реестр!$I:$I;D$4);СУММЕСЛИМН(ДВССЫЛ("Реестр!"&$K$3);
Реестр!$F:$F;$C$7;Реестр!$G:$G;
$C15;Реестр!$I:$I;D$4;Реестр!$A:$A;"<="&Версия))*ЕСЛИ
($A15="-";-1;1)
85
87
Формирование
консолидированного бюджета
89
Sub UpdateRegistry()
Count = 2
LinesTo = 4
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
WB.Close savechanges:=False
Count = Count + 1
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox ("Плановые транзакции успешно загружены из фай-
лов бюджетов ЦФО.")
End Sub
91
Интеграция бюджетирования
с управленческим учетом
и план-фактный анализ
=СУММЕСЛИМН(ДВССЫЛ("'Реестр план'!"&$E$3);
'Реестр план'!$F:$F; $C9;'Реестр план'!$I:$I;D$5)*ЕСЛИ
($A9="-";-1;1)
93
=СУММЕСЛИМН('Реестр факт'!$C:$C;
'Реестр факт'!$J:$J;E$5;'Реестр факт'!$E:$E;$C9;
'Реестр факт'!$I:$I;"факт")*ЕСЛИ($A9="-";-1;1)
=ЕСЛИ(D9=0;0;(E9-D9)/D9)
95
Sub SaveFact()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
LinesFrom = 4
LinesTo = 4
WB.Close savechanges:=True
Count = Count + 1
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
97
Автоматизация казначейства
=ЕСЛИ(I4<>"план";"";ЕСЛИ((ABS(СУММЕСЛИМН($C:$C;$J:$J;J4;
$E:$E;E4;$I:$I;"факт"))+ABS(C4))>ABS(СУММЕСЛИМН(ДВССЫЛ
("'Реестр план'!"&'План-факт'!$E$3);'Реестр план'!$F:$F;E4;
'Реестр план'!$I:$I;J4));"перерасход";"ок"))
99
101
Исходные Промежуточные
Результаты
данные расчеты
105
=B4-B4/(1+B5)*(1+B7*B6/365)
107
109
111
на конец третьего года был равен нулю. В этом случае в данное поле
нужно ввести адрес ячейки F44. Если же нас интересует кредит на
другой срок, соответственно в эту ячейку вводится адрес той ячей-
ки, которая соответствует долгу по кредиту на конец другого года.
2. В поле «Значение»: вводится значение «0», так как мы ищем
величину аннуитетного платежа, при котором кредит полностью по-
гасится в заданный срок.
3. В поле «Изменяя значение ячейки»: задаем адрес ячейки,
в которой хранится величина аннуитетного платежа. В нашем случае
это ячейка D5. Именно эту ячейку Excel будет корректировать, чтобы
получить ноль в конце третьего года.
4. Нажимаем кнопку «ОК». Excel произведет некоторые расчеты,
после чего выведет информацию, которая показана на рис. 7. Данное
сообщение означает, что наши поиски увенчались успехом: в резуль-
тате нескольких итераций Excel удалось подобрать такое значение ан-
нуитетного платежа, при котором сумма долга на конец третьего года
составила 0 рублей.
Теперь на рис. 8 посмотрим, как преобразилась наша модель после
использования данного значения аннуитетного платежа. Как мы ви-
дим, правильная величина аннуитетного платежа равна 1 807 620 руб-
лям, именно при такой сумме платежа сумма задолженности на ко-
нец третьего года будет равна нулю.
Таким образом, рассмотренная нами модель аннуитетного плате-
жа обладает структурой, типичной для любых финансовых моделей,
но при этом промежуточные расчеты занимают в ней практически
подавляющую долю, а исходные данные и результаты работы пред-
ставлены лишь одним-двумя параметрами. Это не является каким-
либо достоинством или недостатком нашей модели, а просто иллю-
стрирует озвученный ранее тезис о том, что структура и организация
работы частных моделей целиком завязаны на решаемые ими задачи
и могут быть абсолютно любыми.
113
Модель продаж
Создадим в нашей книге лист «Модель продаж» и заполним его так,
как показано на рис. 1 на стр. 116. Модель продаж идет в бюджетной
модели первой, так как в ООО «Ромашка», как и в подавляющем боль-
шинстве реальных компаний, узким местом, ограничивающим воз-
можности по росту бизнеса, является объем продаж. А узкие места
должны идти первыми, так как все остальные показатели работы вы-
текают из них и рассчитываются на их основе.
Логика формирования модели продаж определяется индивиду-
альными особенностями рынка, на котором действует компания,
поэтому наш пример может оказаться не очень показательным для
других отраслей. Тем не менее на этом примере можно понять суть
создания модели.
Итак, как видно из рис. 1, модель продаж представляет собой не-
сколько смысловых блоков, самый первый из которых состоит из на-
туральных показателей (то есть измеренных не в рублях, а в неденеж-
ных единицах измерения).
«Суммарный трафик в сети» – первый показатель этого бло-
ка. В нем отображается количество показов страниц с рекламой
посетителям интернета. Для того чтобы продавать рекламу на веб-
страницах, необходимо, чтобы на эти страницы заходили пользо-
ватели, и количество этих пользователей является ограничителем
объема продаж компании. В нашем случае мы знаем, что в 2015 году
трафик составит 120 млн показов, а далее он будет расти по мере уве-
личения количества сайтов в нашей сети и количества посетителей
этих сайтов. Ключевая задача – спрогнозировать этот трафик на весь
10-летний горизонт планирования. Это можно сделать, просто задав
значения трафика на каждый год, но правильнее рассчитать его ум-
ножением трафика предыдущего года на некий коэффициент роста.
115
117
119
=$B$9*B20
=$C$9*B20
121
Модель закупок
Сразу после продаж логично запланировать закупки. В нашем слу-
чае мы продаем трафик и закупать должны тоже трафик, поскольку
сайты, на которых будет показываться наша реклама, предоставят
нам свои страницы отнюдь не безвозмездно. Поэтому создадим в на-
шей книге лист «Модель закупок» и заполним ее так, как показано на
рис. 5 на стр. 121.
Вообще модель закупок организована достаточно просто. Величи-
на закупок напрямую связана с величиной продаж. Рассмотрим, ка-
кие блоки в нее входят.
«Выручка». Информация для этого блока берется из модели про-
даж. Обратите внимание, что выручка представлена в разбивке по
продуктам, причина – различная маржинальность разных продуктов
и, как следствие, разная доля затрат на трафик в выручке у разных
продуктов. Эта доля прописана в блоке «Доля затрат на трафик
в выручке». Этот блок мы должны заполнить вручную, при необхо-
димости изменяя долю затрат для каких-либо продуктов с течением
времени (например, при изменении ценовой политики или политики
разделения прибыли с площадками). В нашем примере доля затрат
для каждого года прогнозного периода одинакова.
«Затраты на трафик». Здесь представлен результат расчетов за-
трат на трафик. Он рассчитывается простым перемножением суммы
123
125
Модель налогов
Налоги – особая категория бюджетной модели. С одной стороны, на-
логи можно отнести к накладным расходам. С другой – они рассчи-
тываются по собственным, достаточно сложным алгоритмам, на них
может влиять множество различных факторов (зависящих помимо
всего прочего от принятой в компании модели налогового планирова-
ния), поэтому правильнее расчет налогов осуществлять в отдельной
подмодели. Реализация модели налогов для нашего ООО «Ромашка»
представлена на рис. 13 на стр. 134. Как мы видим, в нашей модели
налогов рассчитываются суммы только одного налога – НДС. Это свя-
зано с тем, что зарплатные налоги у нас были рассчитаны в модели
расчетов с персоналом, а налог на прибыль мы будем считать непо-
средственно в отчете о прибылях и убытках (в качестве иллюстрации
такого подхода), поэтому остается только НДС.
НДС рассчитывается по следующему алгоритму.
1. Определяется сумма выручки с НДС (из модели продаж).
2. Из нее вычитается сумма затрат с НДС (из модели закупок и мо-
дели операционных расходов).
127
129
Модель кредитования
Важной частью функционирования бизнеса является привлечение
банковских кредитов для финансирования операционной деятель-
ности и инвестиционного процесса. Предусмотрим в нашей модели
подмодель кредитования и заполним ее таким образом, как это пока-
зано на рис. 15 на стр. 137. Состоит данная подмодель из двух основных
блоков: описания кредитов, которые компания планирует привлечь,
а также раскладки связанных с ними денежных потоков с разбивкой
по месяцам.
131
Модель инвестиций
Данная модель описывает направления инвестирования денежных
средств компании во внеоборотные активы. Структура модели пред-
ставлена на рис. 16 на стр. 137. Аналогично модели кредитования она
состоит из двух таблиц: в первой из них описываются объекты основ-
ных средств (с указанием их стоимости, даты приобретения и срока
амортизации), а во второй таблице формируется ежемесячная раз-
бивка денежных потоков по оплате основных средств и затрат на
амортизацию.
133
135
= ЕСЛИ(C42-C44<0;0;(C42-C44)*0,2)
137
139
141
143
Модель инвестиционного
проекта
145
147
149
151
Создание типовых
документов
155
157
159
161
Автоматическая генерация
сообщений электронной почты
=ГИПЕРССЫЛКА("mailto:"&E2&"&subject=Просрочка!&body=
Уважаемый "&C2&"!%0A%0AСообщаю Вам о том, что "&B2&"
имеет просроченную задолженность перед ООО "Ромашка"
в размере "&D2&" руб. Просим срочно погасить
долг.%0A%0AПушкин А.С.";"Отправить")
Сообщаю Вам о том, что ООО «Юпитер» имеет просроченную задолженность перед
ООО «Ромашка» в размере 9823423 руб. Просим срочно погасить долг.
Пушкин А.С.
163
165
C=0
Open "d:\textreg.txt" For Input As #1
Do Until EOF(1)
Line Input #1, S
C=C+1
If S <> "start" Then
MsgBox ("Ожидается слово start в строке" & C)
Exit Do
End If
Line Input #1, EName: C = C + 1
Line Input #1, EMail: C = C + 1
Line Input #1, ETitle: C = C + 1
167
169
Line = 4
Do While SheetTable.Cells(Line, 1).Value <> ""
Name = SheetTable.Cells(Line, 2).Value
LineList = 1
Found = False
Do While SheetList.Cells(LineList, 1).Value <> "stop"
If (SheetList.Cells(LineList, 1).Value = Name) And(SheetList.
Cells(LineList + 10, 1).Value = "1.Начислено") Then
Found = True
Exit Do
Else
LineList = LineList + 1
End If
Loop
If Found And (SheetTable.Cells(Line, 4).Value <> "") Then
Print #1, "start"
Print #1, Name
Print #1, SheetTable.Cells(Line, 3).Value
Print #1, "Расчётный листок за" & SheetTable.Cells
(1, 9).Value
Print #1, "<b>" & "1. Начислено для выплаты на карточку"
& "</b>"
LineBlock = LineList + 11
Do While SheetList.Cells(LineBlock - 1, 1).Value <> "Всего
начислено"
Print #1, SheetList.Cells(LineBlock, 1).Value & ":" &
FForm(SheetList.Cells(LineBlock, 25).Value)
LineBlock = LineBlock + 1
Loop
Print #1, ""
Print #1, "<b>" & "2. Удержан налог на доходы физических
лиц" & "</b>"
LineBlock = LineList + 11
Do While SheetList.Cells(LineBlock – 1, 37).Value <>
"Всего удержано"
If SheetList.Cells(LineBlock, 37).Value <>
"" Then Print #1, SheetList.Cells(LineBlock, 37).Value & ":"
& FForm(SheetList.Cells(LineBlock, 48).Value)
LineBlock = LineBlock + 1
Loop
LineBlock = LineBlock + 1
Print #1, ""
Print #1, "<b>" & "3. Перечислены деньги на банковскую
карту" & "</b>"
Do While SheetList.Cells(LineBlock - 1, 37).Value <>
"Всего выплат”
If Right(SheetList.Cells(LineBlock, 37).Value, 13) =
"(через кассу)"
Then
ViaCash = Left(SheetList.Cells(LineBlock, 37).Value,
Len(SheetList.Cells(LineBlock, 37).Value) - 14)
Else
ViaCash = SheetList.Cells(LineBlock, 37).Value
End If
Print #1, ViaCash & ":" & FForm(SheetList.
Cells(LineBlock, 48).Value)
LineBlock = LineBlock + 1
Loop
Line = Line + 1
Loop
Close #1
End Sub
171
173
Организация веб-опросов
175
177
https://onedrive.live.com/redir?page=survey&resid=44145588E6
7CC2F7!2524&authkey=!APCx_9vhYuvYFTo&ithint=file%2cxlsx
179
181
Контроль дебиторской
задолженности
183
185
187
189
Вместе с тем у «1С» тоже есть ряд козырей в рукаве. Это функцио-
нальное прикладное решение. То есть, в отличие от Excel, «1C» с са-
мого начала, сразу после установки умеет вести управленческий,
бухгалтерский и налоговый учет, формировать отчетность, давать
разнообразную аналитику и т.д. Excel на этом фоне – просто белый
191