Страницы: 1
RSS
UDF. Увеличивать значение на единицу при автозаполнение каждой последующей ячейки
 
Не знаете, как увеличивать данные одного из аргументов пользовательской функции на единицу при автозаполнение каждой последующей ячейки?
Изменено: vikttur - 21.10.2021 10:38:01
 
И Вам, здравствуйте.
В качестве аргумента можно взять СТРОКА(A1). При копировании формулы A1 будет нарастать 2,3,...
 
Лучше от вас небольшой файл-пример и описание задачи и какой результат должен быть
 
Код
Function InsA2(a1, a2) 'функция возвращает 2-й аргумент увеличенный на 1
  InsA2 = a2 + 1
End Function

' см. как увеличиваются значения В2, В3, В4 (на единицу)
Изменено: Ігор Гончаренко - 21.10.2021 09:34:53
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
New, выбираю пользовательскую функцию "ING", в аргументе "А" пишу 523 в аргументе "Б" пишу 245, получается в ячейке номер 523-245. Нужно, чтобы число в аргументе "Б" увеличивалось на единицу при автозаполнение каждой последующей ячейки.
 
честно сказать, не знаю как точно, но попробуйте так.

Код
Function ING(А As Variant, Б As Variant) As String
    ING = А & "-" & CDbl(Б) + Application.Caller.Row - 1
End Function
Изменено: New - 21.10.2021 12:07:27
 
New, работает. Вот только один момент, если я выбираю эту функцию в произвольной ячейке, к примеру A5 и в аргументе "А" пишу 523, а в аргументе "Б" 245, то в ячейке появляется 523-246, а мне нужно, чтобы первоначальное значение было как в аргументах, а увеличение на единицу только при автозаполнение. Допустим, указал я в аргументах пользовательской функции ячейки A5 данные: 523, 245. В ячейке получилось 523-245, дальше применяю автозаполнение до ячейки A6 и в ней число аргумента "Б" увеличивается на единицу и соответсвенно в ячейке A6  должно быть 523-246.
Изменено: Ибрагим Белхороев - 21.10.2021 16:18:24
 
не знаю, как вам помочь, вот ещё вариант (добавил 3-й аргумент)
Если вводите в ячейку А5 (т.е. в 5-ю строку, то 3-м аргументом указать номер строки - 5)
Для ячейки А5
=ING(523;245;5)
Код
Function ING(А As Variant, Б As Variant, НомСтроки As Long) As String
    ING = А & "-" & CDbl(Б) + (Application.Caller.Row - НомСтроки)
End Function
 
Ибрагим Белхороев,
см.сообщение 4, там что увеличивается не второй аргумент или может быть не на единицу? или не в каждой последующей ячейке?
что не так?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ну, если только один из аргументов "привязать" к ячейкам листа:
Код
Function ING_2(ByVal A As Variant, ByVal B As Variant)
    Dim R As Long
    If TypeOf A Is Range Then
        Set A = A.Cells(1)
        R = A.Row
    ElseIf TypeOf B Is Range Then
        Set B = B.Cells(1)
        R = B.Row
    Else
        ING_2 = CVErr(xlErrValue)
        Exit Function
    End If
    ING_2 = CStr(A) & "-" & CStr(B + Application.ThisCell.Row - R)
End Function 'ING_2'
 
Ігор Гончаренко, увеличивается, но не так, как я имел в виду. Код в сообщение #4 сразу увеличивает значение второго аргумента, а мне нужно, чтобы при автозаполнение увеличивалось. Пример: Выбираю любую ячейку, пусть будет C7, в строке для формул пишу свою пользовательскую функцию, в ней указываю значение второго аргумента число 25, все, в ячейке C7 должно появится число 25, дальше применяю автозаполнение допустим до ячейки C9, в итоге в ячейках C7, C8, C9 будет: 25, 26, 27 соответственно. Вот результат, который мне необходим.
 
New, вариант подходит, просто неудобно, то что нужно указывать номер строки, хотелось бы, чтобы номер строки определялся автоматически. Спасибо вам за помощь.
 
С.М., Спасибо, этот вариант тоже интересен.
 
В который раз... Можно же ДОПОЛНЯТЬ сообщения.
Изменено: vikttur - 22.10.2021 13:17:48
 
Цитата
vikttur написал:
Можно же ДОПОЛНЯТЬ сообщения
Это не очень удобно, особенно если торопишься дать ответ. Быстрее - тупо вбить ответ в форму ответов и нажать "Ответить".
Страницы: 1
Наверх