Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Переменная для формулы., Как грамотно назначить переменную для поледней формулы
 
Большое спасибо за ответ. Догадывался, что как-то так, пробовал по разному эту переменную вставлять в этом куске формулы, но незнание этого языка к успеху не привело. Ещё раз спасибо.
Переменная для формулы., Как грамотно назначить переменную для поледней формулы
 
Что-то на верное я не правильно объяснил. Надо чтобы в  "$E$3*$F$3%" при выборе в таблице определенной строки 3 менялась на номер той строки, которую выбрали.
Переменная для формулы., Как грамотно назначить переменную для поледней формулы
 
Всем привет. Я не специалист в область макросов, но нужна помощь в их правильной работе. Есть вот такой макрос

Код
Public Sub Raschot()
    
    Dim lr&: lr = ActiveCell.Row
    
    Application.ScreenUpdating = False
 
    Range("B14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & ")"
        Range("B14:B22").Select
        Selection.NumberFormat = "m/d/yyyy"
        Selection.HorizontalAlignment = xlCenter
          
        Range("C14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31), LARGE(DATE(ROW(INDIRECT(YEAR(C" & lr & ")&"":""&YEAR(1))),12,31),1),C" & lr & ")"
        Range("C14:C22").Select
        Selection.NumberFormat = "m/d/yyyy"
        Selection.HorizontalAlignment = xlCenter
         
         Range("D14").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1"
        Range("D14:D22").Select
        Selection.NumberFormat = "#,##0"
        Selection.HorizontalAlignment = xlCenter
         
          
        Range("E14").Formula2 = "=IF(DAY(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""& YEAR(C" & lr & "))),2,29))=29,366,365)"
        Range("E14:E22").Select
        Selection.NumberFormat = "#,##0"
        Selection.HorizontalAlignment = xlCenter
          
       Range("F14").Formula2 = "=(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1)/IF(DAY(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),2,29))=29,366,365)"
       Range("F14:F22").Select
       Selection.NumberFormat = "m/d/yyyy"
       Selection.HorizontalAlignment = xlCenter
       
       Range("G14").Formula2 = "=$E$3*$F$3%*(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),LARGE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),12,31),1),C" & lr & ")-(--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & "+1))+1)/IF(DAY" & _
            "(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),2,29))=29,366,365)"
       Range("G14:G22").Select
       Selection.NumberFormat = "#,##0.00"
       Selection.HorizontalAlignment = xlRight
       Application.ScreenUpdating = True
       Range("G14").Select
End Sub

В последней формуле, где  Range("G14", есть вот такое выражение $E$3*$F$3% , для правильной работы формулы ему надо назначить переменную.
Как тут грамотно поступить?
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Исправил как Вы советовали,
Код
Range("I3").Select
    ActiveCell.Formula2R1C1 = _
        "=--SUBSTITUTE(DATE(ROW(INDEX(C2,YEAR(R" & lr & "C[-7])&"":""&INDEX(C2,YEAR(R" & lr & "C[-6])))),1,1),SMALL(DATE(ROW(INDEX(C2,YEAR(R" & lr & "C[-7])&"":""&INDEX(C2,YEAR(R" & lr & "C[-6])))),1,1),1),R" & lr & "C[-7])"
     Range("I3:I11").Select
    Selection.NumberFormat = "m/d/yyyy"
    Selection.HorizontalAlignment = xlCenter
но получается не тот вариант отображения расчета, что я хотел. По Вашему соту результат выводится в одну ячейку (картинка неправильно), мне важно, чтобы результат выводился, так скажем, как полностью раскрытый массив (картинка правильно).
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Спасибо за совет. Попробую как Вы советуете. Я в вопросах VBA  профан.
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Короче похоже разобрался сам. Делаю так
Код
 If Not Intersect(Target, Range("D3:D13")) Is Nothing Then
        Dim lr&
        lr = Target.Row
        Application.ScreenUpdating = False
 
    Range("I3").Select
    ActiveCell.Formula2R1C1 = _
        "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(R" & lr & "C[-7])&"":""&YEAR(R" & lr & "C[-6]))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(R" & lr & "C[-7])&"":""&YEAR(R" & lr & "C[-6]))),1,1),1),R" & lr & "C[-7])"
     Range("I3:I11").Select
    Selection.NumberFormat = "m/d/yyyy"
    Selection.HorizontalAlignment = xlCenter

Далее по такому же принципу все остальные формулы и в конце макроса

Код
Application.ScreenUpdating = True
   Range("N3").Select

Тему можно закрыть.

Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Если я невразумительно описываю мою проблему, то на мой взгляд стоит открыть файл Расчет_Formula2_окончательная — копия (сообщение 3), одиночный клик по D3  потом по  D4 и для большего понимания по D5. Более наглядного понимания я не нахожу.
Изменено: Иван Иванов - 13.06.2023 10:23:53
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Цитата
...R" & lr & "C2..
А конкретную работу ваших предложений, приложенном файле Расчет_Formula2R1C1_1 возможно ?
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Цитата
ссылка идет на строку ® и столбец ©
Это всё понятно. Как в данной ситуации правильно объявить переменную и присвоить ей значение? В формате А1 делаю так для первой формулы
Код
If Not Intersect(Target, Range("D3:D13")) Is Nothing Then
        Dim lr&
        lr = Target.Row
  Application.ScreenUpdating = False
 Range("I3").Formula2 = "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(B" & lr & ")&"":""&YEAR(C" & lr & "))),1,1),1),B" & lr & ")"
        Range("I3:I12").Select
        Selection.NumberFormat = "m/d/yyyy"
        Selection.HorizontalAlignment = xlCenter
далее ещё 5 формул и в конце макроса
Код
Application.ScreenUpdating = True
       Range("N3").Select
    End If
End Sub
В приложенных файлах все данные для ответ на мой вопрос есть. В А1 переменную в формулу вставляем так.
Код
(B" & lr & ")
А как тоже самое делать  в формулах Formula2R1C1 ?
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Ваш результат
 
03.04.2021
 
01.01.2024
 
03.04.2023
 
03.04.2022
 
00.01.1900
 
00.01.1900
 
00.01.1900
 
00.01.1900
 
00.01.1900

 Результат который должен быть

 
03.04.2021
 
01.01.2022
 
01.01.2023
 
01.01.2024
 
01.01.2025
 
01.01.2026
 
01.01.2027
 
01.01.2028
 
01.01.2029
Файл в формате А1, в котором всё работает как надо прилагаю.
Надо так же, но с Formula2R1C1 при переходе по строкам.
При переходам по строкам понимается, что 1-й клик производится в столбце по строкам  D 3,D4 и т.д.

Изменено: Иван Иванов - 12.06.2023 11:38:33
Переменная в Formula2R1C1 при переходе по строкам., Как грамотно использовать переменную в Formula2R1C1 в расчётах, переходя по строкам ?
 
Имеется таблица в диапазоне B3:G11. Справа от таблицы выводятся результаты расчетов строк. В приложенном файле расчет работает для первой строки при одиночном клике по D3, а хотелось бы чтобы расчет происходил  при переходе по строкам  при одиночном клике в столбце D. Как такой вариант расчета делается с формулами формата А1 я разобрался, а с форматом Formula2R1C1 не получается. Представляю, что надо как-то так "...[" & переменная & "]...", но не получается. Всего формул для расчета 6, вот код первой формулы
Код
Range("I3").Select
    ActiveCell.Formula2R1C1 = _
        "=--SUBSTITUTE(DATE(ROW(INDIRECT(YEAR(RC[-7])&"":""&YEAR(RC[-6]))),1,1),SMALL(DATE(ROW(INDIRECT(YEAR(RC[-7])&"":""&YEAR(RC[-6]))),1,1),1),RC[-7])"
     Range("I3:I11").Select
    Selection.NumberFormat = "m/d/yyyy"
    Selection.HorizontalAlignment = xlCenter

Прошу помочь разобраться с переменной в этом случае. Всем спасибо.

Изменено: Иван Иванов - 12.06.2023 08:44:12
Вывод значения переменной в конкретную ячейку., Вывод значения переменной в конкретную ячейку после выполнения макроса.
 
Всё началось вот с этого макроса

Код
Sub macro_2()

    Dim strFormula As String

    strFormula = strFormula & "=--ПОДСТАВИТЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&"":""&ГОД(B1)"
    strFormula = strFormula & "));12;31);НАИБОЛЬШИЙ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&"":""&"
    strFormula = strFormula & "ГОД(B1)));12;31);1);B1)-(--ПОДСТАВИТЬ(ДАТА(СТРОКА(ДВ"
    strFormula = strFormula & "ССЫЛ(ГОД(A1)&"":""&ГОД(B1)));1;1);НАИМЕНЬШИЙ(ДАТА(СТРО"
    strFormula = strFormula & "КА(ДВССЫЛ(ГОД(A1)&"":""&ГОД(B1)));1;1);1);A1+1))+1"

    Range("C16").FormulaLocal = strFormula
End Sub

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

Цитата
написал:
нежизнеспособную (бестолковую) формулу,
Так что не я придумал эту формулу. Подобный вариант появления @ обсуждался тут символ @ . Я решил как-то обойти появление @, поэтому и пробовал

с помощью своего макроса решить эту проблему. Отдельное спасибо Тимофееву. тему можно закрыть. Всем пока-пока.

Вывод значения переменной в конкретную ячейку., Вывод значения переменной в конкретную ячейку после выполнения макроса.
 
Цитата
написал:
Ну если формула массива, наверное формулу писать не на русском и .FormulaArray
Я в этих вещах неспециалист. Ели несложно как конкретно эта формула, без @, должна выглядеть не на русском? Пробовал русские ПОДСТАВИТЬ и прочие тупо заменить на аналоги английские, но ничего не получилось. Разделители (току с запятой) естественно менял на  (,).
Изменено: Иван Иванов - 31.05.2023 19:33:37
Вывод значения переменной в конкретную ячейку., Вывод значения переменной в конкретную ячейку после выполнения макроса.
 
Так то
Код
strText = "=--ПОДСТАВИТЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A3)&"":""&ГОД(B3)));1;1);НАИМЕНЬШИЙ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A3)&"":""&ГОД(B3)));1;1);1);A3)"
Range("B2").FormulaLocal = strText
End Sub

понятно , что работает. Смысл в том, чтобы убрать @  
Код
strText = "=--ПОДСТАВИТЬ(ДАТА(@ СТРОКА(ДВССЫЛ(ГОД(A3)&:&ГОД(B3)));1;1);НАИМЕНЬШИЙ(ДАТА(@СТРОКА(ДВССЫЛ(ГОД(A3)&:&ГОД(B3)));1;1);1);A3)"
и работало.

Оно и с @ работает, но не так как надо, так выдает результат одной строкой (см. В12)
, а так
=--ПОДСТАВИТЬ(ДАТА( СТРОКА(ДВССЫЛ(ГОД(A3)&":"&ГОД(B3)));1;1);НАИМЕНЬШИЙ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A3)&":"&ГОД(B3)));1;1);1);A3)
в несколько строк. Нужен результат в несколько строк (см. В16).
Изменено: Иван Иванов - 01.06.2023 22:37:05
Вывод значения переменной в конкретную ячейку., Вывод значения переменной в конкретную ячейку после выполнения макроса.
 
Range("B2") = strText выдает ошибка 1004
Вывод значения переменной в конкретную ячейку., Вывод значения переменной в конкретную ячейку после выполнения макроса.
 
Всем привет. Вывод результата в MsgBox работает нормально, вот вывести результат в ячейку не получается. Макрос вот такой
Код
Sub delete_1()   
Dim strText  As String, strSymb1 As String
    strText = "=--ПОДСТАВИТЬ(ДАТА(@ СТРОКА(ДВССЫЛ(ГОД(A3)&:&ГОД(B3)));1;1);НАИМЕНЬШИЙ(ДАТА(@СТРОКА(ДВССЫЛ(ГОД(A3)&:&ГОД(B3)));1;1);1);A3)"
    strSymb1 = "@"
    strText = Replace(strText, strSymb1, "")
MsgBox strText
End Sub

Обработанную формулу вывести в ячейку например B2.
Всем спасибо
Изменено: Иван Иванов - 01.06.2023 22:36:09
Различие результатов работы формул., Формула Ecel не такой результат как формула из макроса.
 
Всем привет. Сразу предупреждаю, что я неспециалист в этих делах. так что не судите строго. Вот тут Формула Excel для VBA
почерпнул очередную порцию знаний. В постах 4 и 17 описано, как переделывать формулы Excel для VBA. Всё вроде бы получилось, но выведенные данные различаются. Результат работы формулы Excel (в две строки, так и должно быть), а результат VBA всё суммирует и выводит в одну строку. в чём проблема и возможно ли это как-то исправить? Файл представил.
Всем спасибо.
Вывод данных по горизонтали, Формула выводит данные по вертикали, а надо по горизонтали.
 
Отлично ! Вроде бы всё получилось, правда формула у меня реально более длинная. Всем спасибо.
Вывод данных по горизонтали, Формула выводит данные по вертикали, а надо по горизонтали.
 
Всем привет. Имею вот такую формулу
Код
=ЕСЛИ(ДЕНЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));2;29))=29;366;365)

данные выводятся по вертикали. Возможен ли в данном случае вывод данных по горизонтали? Описание в файле. Всем спасибо.
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Всем привет. Хороший форум, участники стараются помочь с решением вопросов. С формулой я вроде бы разобрался. Как мне кажется, после внесения мой изменений, она считает правильно. Ранее что-то подобное встречал тут Формула и где-то на этом форуме, там так же считало с ошибками. Во вложенных файлах описано, что исправлял и как проверял расчеты. Вот сама формула
Код
=D1*E1%*СУММ((--ПОДСТАВИТЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));12;31);НАИБОЛЬШИЙ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));12;31);1);B1)-(--ПОДСТАВИТЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));1;1);НАИМЕНЬШИЙ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));1;1);1);A1+1))+1)/ЕСЛИ(ДЕНЬ(ДАТА(СТРОКА(ДВССЫЛ(ГОД(A1)&":"&ГОД(B1)));2;29))=29;366;365))


Всем успехов.
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Огромное Вам СПАСИБО! Чуть позже разберусь в подробностях Вашей формулы. Долгих Вам лет.
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Что-то я не понял, что означает сумма 2 393 429,15. У меня  получается доход =299 726,78. В файле мой расчет.
Изменено: Иван Иванов - 28.04.2023 17:23:10
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Без капитализации, просто расчет исходя из количества дней, суммы вклада, процентной ставки, с учетом високосных и невисокосных годов, получение дохода в конце срока вклада.
Изменено: Иван Иванов - 28.04.2023 14:21:13
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
 Я и хотел получить результат этой формулы, а затем проверить правильность её работы.
Изменено: Иван Иванов - 28.04.2023 14:00:11
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Вот тут Функция написано, что это содержит реализацию двух пользовательских функций Excel, написанных на языке VBA. Что это за пользовательские функции Excel ? Я так понимаю, что им есть аналоги в наборе пользовательских функций в Excel ?
Изменено: Иван Иванов - 28.04.2023 12:46:50
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Спасибо за от вет. Это я находил и читал. Тут высчитывается количество високосных лет в определенном промежутке времени, а представленная мной формула, как я понимаю,  должна посчитать какой-то доход с вклада за определенный промежуток времени с учетом дохода в високосные и не високосные годы.
LEAP_DAYS и NON_LEAP_DAYS, Как это написать обычными пользовательскими функциями в русском Excel
 
Всем привет. Нашел тут в интернете вот такую формулу. Возможно ли это написать обычными пользовательскими функциями  в русском Excel ? Всем спасибо за ответы.
Код
 =D1 * E1*(LEAP_DAYS(A1; B1)/366+NON_LEAP_DAYS(A1; B1)/365)
Использование функции ЕСЛИ(И, Написал формулу, но в результате пишет ошибка.
 
БАХТИЕР, я разобрался в Вашей формуле. Мне подходит. С остальными предложениями разберусь чуть позже. Всем огромное спасибо за участие.
=ЕСЛИ(И(ЕОШ(-("29.2."&ГОД(A1)));НЕ(ЕОШ(-("29.2."&ГОД(B1)))));1;ЕСЛИ(И(НЕ(ЕОШ(-("29.2."&ГОД(A2))));НЕ(ЕОШ(-("29.2."&ГОД(B2)))));2;""))
работает несколько неправильно. Результат вот такой
А1 и В1   03.04.2023 03.04.2024   1
А2 и В2  03.04.2020  03.04.2021   ПУСТО
А3 и В3                                            2          Результат выдает через строку.  
Изменено: Иван Иванов - 19.04.2023 08:02:32
Использование функции ЕСЛИ(И, Написал формулу, но в результате пишет ошибка.
 
БАХТИЕР, идея правильная, но не полностью функционирует. Файл высылаю.
Использование функции ЕСЛИ(И, Написал формулу, но в результате пишет ошибка.
 
Высылаю новый файл в котором показано, что было и что стало, результат вычисления формулы 1,2 или 5, 10 роли не играет, результатом вычисления бубет какой-то мой расчет. Главное чтобы формула работала.
Страницы: 1 2 След.
Loading...