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

Вход

Регистрация

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

 

= Мир MS Excel/Подсчёт количества дней прошедших с момента - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчёт количества дней прошедших с момента (Формулы/Formulas)
Подсчёт количества дней прошедших с момента
sawanart22 Дата: Вторник, 11.01.2022, 18:07 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
Просьба помочь с проблемой "Подсчёт количества дней прошедших с момента когда в заданой ячейке появилась условная цифра", например:

арт. | количество | сколько дней уже такая цифра без изменений
545194 | 0 | ?

При этом если количество обновляется, ячейка с днями должна обнуляться до момента пока в заданой ячейке опять не появится 0.
Спасибо.
 
Ответить
СообщениеДобрый день.
Просьба помочь с проблемой "Подсчёт количества дней прошедших с момента когда в заданой ячейке появилась условная цифра", например:

арт. | количество | сколько дней уже такая цифра без изменений
545194 | 0 | ?

При этом если количество обновляется, ячейка с днями должна обнуляться до момента пока в заданой ячейке опять не появится 0.
Спасибо.

Автор - sawanart22
Дата добавления - 11.01.2022 в 18:07
Serge_007 Дата: Вторник, 11.01.2022, 23:10 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Здравствуйте

Excel такое не умеет, необходима помощь VBA


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Excel такое не умеет, необходима помощь VBA

Автор - Serge_007
Дата добавления - 11.01.2022 в 23:10
Gustav Дата: Среда, 12.01.2022, 00:06 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
необходима помощь VBA

Да, без нее не обойтись. Примерно так можно:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oldValue As Variant, kind As Integer
    If Target.Cells.Count = 1 And Me.Name = "Лист1" And Target.Row >= 2 And Target.Column = 2 Then
    
        'получаем предыдущее (старое) значение ячейки
        Application.EnableEvents = False
        Application.Undo
        oldValue = Target.Value
        Application.Undo
        Application.EnableEvents = True
        
        'сравниваем старое и новое значение
        kind = 0 'и ниже переопределяем, если надо (0 = стираем формулу)
        Select Case VarType(Target.Value)
            Case 2 To 6 'новое = числа - с vbInteger по vbCurrency
                If Target.Value = 0 Then 'явное указание 0
                    kind = 1 'вставляем формулу (или переопределяем ниже)
                    Select Case VarType(oldValue)
                        Case 2 To 6 'старое = числа - с vbInteger по vbCurrency
                            If oldValue = 0 Then 'и старое 0, и новое 0 - т.е. фактически не менялось
                    kind = 2 'ничего не делаем
                            End If
                    End Select
                End If
        End Select
        
        'определяем содержимое ячейки справа
        Select Case kind
            Case 0 'стираем формулу
                Target.Next.ClearContents
            Case 1 'вставляем формулу
                Target.Next.Formula = "=TODAY()-DATE(" & Format(Now, "yyyy,m,d") & ")"
            Case 2 'ничего не делаем
                'случай старое = 0 и новое = 0 (т.е. не стираем формулу)
        End Select
    End If
End Sub
[/vba]
И далее кол-во прошедших дней считается по вставляемой в ячейку справа формуле, фиксирующей дату редактирования функцией ДАТА:
Код
=СЕГОДНЯ()-ДАТА(2022;1;11)
К сообщению приложен файл: ew2_49049_.xlsm (16.8 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 12.01.2022, 02:17
 
Ответить
Сообщение
необходима помощь VBA

Да, без нее не обойтись. Примерно так можно:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oldValue As Variant, kind As Integer
    If Target.Cells.Count = 1 And Me.Name = "Лист1" And Target.Row >= 2 And Target.Column = 2 Then
    
        'получаем предыдущее (старое) значение ячейки
        Application.EnableEvents = False
        Application.Undo
        oldValue = Target.Value
        Application.Undo
        Application.EnableEvents = True
        
        'сравниваем старое и новое значение
        kind = 0 'и ниже переопределяем, если надо (0 = стираем формулу)
        Select Case VarType(Target.Value)
            Case 2 To 6 'новое = числа - с vbInteger по vbCurrency
                If Target.Value = 0 Then 'явное указание 0
                    kind = 1 'вставляем формулу (или переопределяем ниже)
                    Select Case VarType(oldValue)
                        Case 2 To 6 'старое = числа - с vbInteger по vbCurrency
                            If oldValue = 0 Then 'и старое 0, и новое 0 - т.е. фактически не менялось
                    kind = 2 'ничего не делаем
                            End If
                    End Select
                End If
        End Select
        
        'определяем содержимое ячейки справа
        Select Case kind
            Case 0 'стираем формулу
                Target.Next.ClearContents
            Case 1 'вставляем формулу
                Target.Next.Formula = "=TODAY()-DATE(" & Format(Now, "yyyy,m,d") & ")"
            Case 2 'ничего не делаем
                'случай старое = 0 и новое = 0 (т.е. не стираем формулу)
        End Select
    End If
End Sub
[/vba]
И далее кол-во прошедших дней считается по вставляемой в ячейку справа формуле, фиксирующей дату редактирования функцией ДАТА:
Код
=СЕГОДНЯ()-ДАТА(2022;1;11)

Автор - Gustav
Дата добавления - 12.01.2022 в 00:06
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчёт количества дней прошедших с момента (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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