Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обновление формулы - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление формулы (Макросы/Sub)
Обновление формулы
Fomichev Дата: Четверг, 10.05.2018, 13:59 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день!

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

В настройках формулы пересчитываются автоматически, проверял
 
Ответить
СообщениеДобрый день!

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

В настройках формулы пересчитываются автоматически, проверял

Автор - Fomichev
Дата добавления - 10.05.2018 в 13:59
StoTisteg Дата: Четверг, 10.05.2018, 14:44 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 920
Репутация: 78 ±
Замечаний: 0% ±

Excel 2010
1) Проверьте, не фиксированы ли индексы ($ в формуле)
2) Приложите файл, плз.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение1) Проверьте, не фиксированы ли индексы ($ в формуле)
2) Приложите файл, плз.

Автор - StoTisteg
Дата добавления - 10.05.2018 в 14:44
Pelena Дата: Четверг, 10.05.2018, 15:01 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12909
Репутация: 2844 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Написана своя формула
Если имеется в виду пользовательская функция, попробуйте в начало кода дописать [vba]
Код
Application.Volatile
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
Написана своя формула
Если имеется в виду пользовательская функция, попробуйте в начало кода дописать [vba]
Код
Application.Volatile
[/vba]

Автор - Pelena
Дата добавления - 10.05.2018 в 15:01
Fomichev Дата: Четверг, 10.05.2018, 15:39 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Если имеется в виду пользовательская функция, попробуйте в начало кода дописать
Application.Volatile


Добавил, не сработало
приложил файл, лист "ИТ" смотреть столбец AF, определяющие столбцы AG и P

В данном файле: например ячейка AF41 = 21.05.2018 10:00:00 при условиях AG41 = 6.2 и P41 = Поволжье
Если я AG41 изменяю у меня пропадают все значения из столбца AF где протянута формула
К сообщению приложен файл: 9709590.xlsm(68.1 Kb)
 
Ответить
Сообщение
Если имеется в виду пользовательская функция, попробуйте в начало кода дописать
Application.Volatile


Добавил, не сработало
приложил файл, лист "ИТ" смотреть столбец AF, определяющие столбцы AG и P

В данном файле: например ячейка AF41 = 21.05.2018 10:00:00 при условиях AG41 = 6.2 и P41 = Поволжье
Если я AG41 изменяю у меня пропадают все значения из столбца AF где протянута формула

Автор - Fomichev
Дата добавления - 10.05.2018 в 15:39
Pelena Дата: Четверг, 10.05.2018, 16:03 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12909
Репутация: 2844 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Вы там переприсваиваете зачем-то аргументы функции.
Вот эти строчки лишние
[vba]
Код
    ss = ActiveCell.Row
    x = Cells(ss, "p")
    y = Cells(ss, "ag")
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеВы там переприсваиваете зачем-то аргументы функции.
Вот эти строчки лишние
[vba]
Код
    ss = ActiveCell.Row
    x = Cells(ss, "p")
    y = Cells(ss, "ag")
[/vba]

Автор - Pelena
Дата добавления - 10.05.2018 в 16:03
_Boroda_ Дата: Четверг, 10.05.2018, 16:10 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12772
Репутация: 5232 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не очень понятно чего Вы хотите. Возможно, вот этого?
[vba]
Код
Function ДАТАРЕЛИЗА(x, y) As String
    Application.Volatile (True)
    Worksheets("Выпадающие списки и дельта").Select
    C = Worksheets("Выпадающие списки и дельта").Cells(Rows.Count, 2).End(xlUp).Row
    s = 0
    q = 0
    For i = 1 To C
        If Worksheets("Выпадающие списки и дельта").Cells(i, 2) = "Релизы на Foris и Siebel" Then s = i: Exit For
    Next i
    For i = s + 1 To C
        If Worksheets("Выпадающие списки и дельта").Cells(i, 2) <> "" And Worksheets("Выпадающие списки и дельта").Cells(i, 3) <> "" And Worksheets("Выпадающие списки и дельта").Cells(i, 4) <> "" Then
            q = q + 1
        End If
    Next i
    a = Worksheets("Выпадающие списки и дельта").Cells(1 + s, 3).Resize(q, 3) 'это вместо нижнего For-Next
'    ReDim a(1 To q, 1 To 3)
'    For i = 1 To q
'        a(i, 1) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 3)
'        a(i, 2) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 4)
'        a(i, 3) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 5)
'    Next i

'============= 'это вообще непонятно зачем. "x" и "y" у Вас определены в самой функции. ActiveCell для этой функции не имеет смысла
'    ss = ActiveCell.Row
'    x = Cells(ss, "p")
'    y = Cells(ss, "ag")
    For i = 1 To q
        If a(i, 1) = x And a(i, 3) = y Then Z = a(i, 2): Exit For
    Next i
    If Z = Empty Then Z = ""
    ДАТАРЕЛИЗА = Z
End Function
[/vba]
К сообщению приложен файл: 9709590_1.xlsm(68.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе очень понятно чего Вы хотите. Возможно, вот этого?
[vba]
Код
Function ДАТАРЕЛИЗА(x, y) As String
    Application.Volatile (True)
    Worksheets("Выпадающие списки и дельта").Select
    C = Worksheets("Выпадающие списки и дельта").Cells(Rows.Count, 2).End(xlUp).Row
    s = 0
    q = 0
    For i = 1 To C
        If Worksheets("Выпадающие списки и дельта").Cells(i, 2) = "Релизы на Foris и Siebel" Then s = i: Exit For
    Next i
    For i = s + 1 To C
        If Worksheets("Выпадающие списки и дельта").Cells(i, 2) <> "" And Worksheets("Выпадающие списки и дельта").Cells(i, 3) <> "" And Worksheets("Выпадающие списки и дельта").Cells(i, 4) <> "" Then
            q = q + 1
        End If
    Next i
    a = Worksheets("Выпадающие списки и дельта").Cells(1 + s, 3).Resize(q, 3) 'это вместо нижнего For-Next
'    ReDim a(1 To q, 1 To 3)
'    For i = 1 To q
'        a(i, 1) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 3)
'        a(i, 2) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 4)
'        a(i, 3) = Worksheets("Выпадающие списки и дельта").Cells(i + s, 5)
'    Next i

'============= 'это вообще непонятно зачем. "x" и "y" у Вас определены в самой функции. ActiveCell для этой функции не имеет смысла
'    ss = ActiveCell.Row
'    x = Cells(ss, "p")
'    y = Cells(ss, "ag")
    For i = 1 To q
        If a(i, 1) = x And a(i, 3) = y Then Z = a(i, 2): Exit For
    Next i
    If Z = Empty Then Z = ""
    ДАТАРЕЛИЗА = Z
End Function
[/vba]

Автор - _Boroda_
Дата добавления - 10.05.2018 в 16:10
sboy Дата: Четверг, 10.05.2018, 16:46 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 578 ±
Замечаний: 0% ±

Excel 2010
Еще вариант "почищенной функции"
[vba]
Код
Function ДАТАРЕЛИЗА(ByVal x, ByVal y) As String
    With Worksheets("Выпадающие списки и дельта")
      Set r = .Range("B:B").Find("Релизы на Foris и Siebel")
      If Not r Is Nothing Then
        Set r = Range(.Cells(r.Row, r.Column), .Cells(r.End(xlDown).Row, r.End(xlToRight).Column))
        arr_ = r.Value
            For i = 1 To UBound(arr_)
             If arr_(i, 2) = x And arr_(i, 4) = y Then Z = arr_(i, 3): Exit For
            Next i
      End If
    ДАТАРЕЛИЗА = Z
    End With
End Function
[/vba]
 
Ответить
СообщениеЕще вариант "почищенной функции"
[vba]
Код
Function ДАТАРЕЛИЗА(ByVal x, ByVal y) As String
    With Worksheets("Выпадающие списки и дельта")
      Set r = .Range("B:B").Find("Релизы на Foris и Siebel")
      If Not r Is Nothing Then
        Set r = Range(.Cells(r.Row, r.Column), .Cells(r.End(xlDown).Row, r.End(xlToRight).Column))
        arr_ = r.Value
            For i = 1 To UBound(arr_)
             If arr_(i, 2) = x And arr_(i, 4) = y Then Z = arr_(i, 3): Exit For
            Next i
      End If
    ДАТАРЕЛИЗА = Z
    End With
End Function
[/vba]

Автор - sboy
Дата добавления - 10.05.2018 в 16:46
Fomichev Дата: Четверг, 10.05.2018, 16:56 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Не очень понятно чего Вы хотите. Возможно, вот этого?


Отлично, именно этого, видимо трабл был в x и У
 
Ответить
Сообщение
Не очень понятно чего Вы хотите. Возможно, вот этого?


Отлично, именно этого, видимо трабл был в x и У

Автор - Fomichev
Дата добавления - 10.05.2018 в 16:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление формулы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!