Благодарю, думал обойтись без макросов. Привел к алгоритму: если число не найдено, то берем предыдущую дату. Если следовать следующей логике: =ДНЕЙ360("09.01.2019";"28.02.2019";1) дает 49 =ДНЕЙ360("09.01.2019";"01.03.2019";1) дает 52 то если для 01.03.2019 дает 52, то 51 должна быть в предыдущую дату. Аналогично для 49, 50. можно конечно поспорить что 49, 50, 51 должна давать 01.03.2019 года, но это больше момент консенсуса с которым мы на работе пришли к утверждению.
Код
Function День360(дата1 As Date, днейМежду As Long) As Date
Dim n&, p&, count_n&
День360 = дата1 + Round(днейМежду * 1.015) 'оценка
n = 0
count_n = 0
Do
count_n = count_n + 1
If count_n >= 10 Then Exit Function
n = WorksheetFunction.Days360(дата1, День360, 1) - днейМежду
If n = 0 Then
If Day(День360) = 31 Then День360 = День360 - 1
Exit Function
ElseIf n > 0 Then
If p >= 0 Then
День360 = День360 - 1
p = 1
Else
днейМежду = днейМежду - 1
p = 1
'Exit Do
End If
Else
If p <= 0 Then
День360 = День360 + 1
p = -1
Else
'Exit Do
днейМежду = днейМежду - 1
p = 1
End If
End If
Loop
День360 = -1 'ошибка
End Function
В Excel легко определяется дата которая отстоит на N дней от другой даты, но только если использовать "фактические дни в году", необходимо просто к нужной дате прибавить необходимое количество дней (N).
Но мне необходимо определить тоже самое, но если "360 дней в году" и используя европейский метод расчета. Разницу между датами можно определить с помощью формулы "дней_между_датами=дней360(дата1;дата2;метод)".
Т.е. известны:
дата1
дней_между_датами
метод = европейский
необходимо найти: дата2 из формулы дней360
может быть уже имеется соответствующая формула в Excel или быть может кто-то уже сталкивался?
Почему функции ЧИСТВНДОХ и ЧИСТНЗ не проходят взаимопроверку, Посчитал доходность денежных потоков, потом их продисконтировал. Результаты не совпадают.
Vlad, раз вы приложили файл с простыми формулами, то просьба переложить их в пример. хотелось бы на практике увидеть насколько они реально будут проще. потому что в примере используется формула для которой нужны только по 2 координаты на каждой из линий чтобы найти пересечения
dioniska169, у вас проблема отсутствия продаж за предыдущие дни имеется только в первый день. В последующие дни уже появляются данные за фактические дни.
во второй день (исторически у вас данные за несколько дней) - ставите допущение что сколько было оформлений вчера столько будет и сегодня и завтра и т.д. на третий день уже используете функцию предсказ или иным способом с учетом двух значений. на четвертый день у вас исторически имеется 3 значения. чем больше значений будет, тем более точен прогноз.
но на самом деле есть ведь ещё такое понятие как "договора в работе" (если они не оформляются день-в-день) и в зависимости от стадии можно спрогнозировать сколько будет заключено в течение следующих дней.
PS. прогнозировать можно и БЕЗ каких либо "своих" данных на основе определённой модели, но конечно довольно приближённо и больше на основе экспертного мнения либо на основе аналогичных продуктов (своих, либо конкурентов). Если вы запускаете какой-то новый продукт, то ведь рассчитываете на какую-то отдачу, вот её и нужно ставить в самом начале в прогноз.
какие вижу способы: 1. можно манипулировать горизонтальной осью, но изменять придётся макросом. минус - только 1 линию так можно создать 2. у диаграммы зафиксировать значение вертикальной оси (максимум и минимум). сделать ещё одну диаграмму, но линейную или точечную и наложить её поверх текущей диаграммы и сделать полупрозрачной.
либо другой вариант -- использовать какой-то специфический шрифт, в котором вместо символа переноса ( ¶ ),будет отображаться ( ). тогда вообще всё будет храниться корректно, но отображаться будет тот символ который будет стоять в шрифте.
Создаёте форму на которую кидаете ListBox. На панель быстрого доступа или на сочетание клавиш вешаете выполнение макроса открытия этой формы.
далее когда нужно написать "стандартную фразу", то вызываете форму и выбирая строку из ListBox, переносите эти данные на лист. Мне кажется ListBox всё же удобнее ComboBox'а для такого.
Сергей, может быть любое значение в т.ч. текст, за исключением ошибки. Так как апостроф это текст, то прописал только его.
Старался прописать полностью (в первом сообщении написано и я его не редактировал): любое значение в ячейке - пустое или заполненное, число, текст и т.п. Т.е. условие выполняется всегда.
Потому-что требуется суммировать в т.ч. те у которых есть пустые значения. Таким образом суммируются значения колонки sum у критерия пусто;0;2;"'";истина Т.е.строки 3:7, так как они по остальным критериям cr2, cr3, cr4, cr5 выполняются. Поменял немного таблицу для суммы чтобы видно что суммировалось а что нет.
Имеетсяя таблица с данными Из неё определёнными формулами вытаскиваются значения по определённым условиям Условия задаются в определённых ячейках и выбираются из выпадающего списка (но их довольно много и они вытягиваются из справочника) В настоящее время появилась проблема, необходимо просуммировать значения, у которых в условии необходимо задать : любое значение в ячейке - пустое или заполненное, число, текст и т.п. Т.е. условие выполняется всегда. Две формулы сделать не получится, потому что условий много (в таблице примера сделал 5 условий), и КАЖДОЕ может быть "любое значение в ячейке", как следствие вариантов довольно много (2*2*2*2*2=32 варианта для 5 условий, а ведь для 6 условий формул придётся делать 64) Пока проблема решается заполнением всех ячеек, даже пустых = (пусто) или ' или через доп.столбец который всё это делает, чтобы формула считала их заполненными, но хотелось бы без дополнительных манипуляций с первичными данными и доп.столбцов Может есть какой-то вариант для СУММЕСЛИМН? (любое значение в ячейке)
Sub Range_to_Picture()
Dim sName As String, wsTmpSh As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("Sheet1").Range("ИменованныйДиапазон1")
.CopyPicture
Set wsTmpSh = ThisWorkbook.Sheets.Add
sName = ActiveWorkbook.FullName & "_" & ActiveSheet.Name & "_Range"
With wsTmpSh.ChartObjects.Add(0, 0, .Width, .Height).Chart
.ChartArea.Border.LineStyle = 0
.Parent.Select
.Paste
.Export Filename:=sName & ".png", FilterName:="png"
.Parent.Delete
End With
End With
wsTmpSh.Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Можно, например, превратить диапазон в рисунок, экспортировать его и связать уже как вставленный рисунок в PP (подвязать это всё на макрос который будет экспортировать).