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

Вход

Регистрация

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

 

= Мир MS Excel/Подсчет суммы при изменении значения в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет суммы при изменении значения в ячейке (Формулы/Formulas)
Подсчет суммы при изменении значения в ячейке
tsch Дата: Четверг, 12.01.2017, 12:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!
Задача следующая: необходимо при каждом изменении значения в ячейке, при этом значение должно быть строго больше нуля, новое значение выводить в другую ячейку, после каждого изменения значения, сдвигая ячейку вниз.

Проблема номер один: значения в ячейку не вводятся, а получаются путем операций с другими ячейками, т.е. код типа:
[vba]
Код
Dim n_

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [a1]) Is Nothing Then
        n_ = [a1]
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
    If Not Intersect(Target, [a1]) Is Nothing Then
        If [a1] <> n_ Then
            If [a1] > 0 Then
                [b1] = [b1] + 1
            End If
        End If
    End If
End Sub
[/vba]
Не работает, т.к. в нем необходимо изменять именно конкретную ячейку.

Проблема номер два: не получается сделать вывод значений изменяемой ячейки в отдельную колонку.

Файл во вложении.
К сообщению приложен файл: test.xlsm (17.0 Kb)
 
Ответить
СообщениеДоброго времени суток!
Задача следующая: необходимо при каждом изменении значения в ячейке, при этом значение должно быть строго больше нуля, новое значение выводить в другую ячейку, после каждого изменения значения, сдвигая ячейку вниз.

Проблема номер один: значения в ячейку не вводятся, а получаются путем операций с другими ячейками, т.е. код типа:
[vba]
Код
Dim n_

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [a1]) Is Nothing Then
        n_ = [a1]
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
    If Not Intersect(Target, [a1]) Is Nothing Then
        If [a1] <> n_ Then
            If [a1] > 0 Then
                [b1] = [b1] + 1
            End If
        End If
    End If
End Sub
[/vba]
Не работает, т.к. в нем необходимо изменять именно конкретную ячейку.

Проблема номер два: не получается сделать вывод значений изменяемой ячейки в отдельную колонку.

Файл во вложении.

Автор - tsch
Дата добавления - 12.01.2017 в 12:32
bmv98rus Дата: Четверг, 12.01.2017, 13:13 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
tsch,

Как идея, по событию Calulate сравнивать значения итересующей нас ячейки с условием и с со "здвинутой ячейкой" . ну и действовать по желаемому алгоритму.
[vba]
Код
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        If [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then
            If [a7] > 0 Then
                Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7]
            End If
        End If
    Application.EnableEvents = True
End Sub
[/vba]

Или чуть короче для записи

[vba]
Код
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        If [a7] > 0 and [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then _
                Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7]
    Application.EnableEvents = True
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 12.01.2017, 21:26
 
Ответить
Сообщениеtsch,

Как идея, по событию Calulate сравнивать значения итересующей нас ячейки с условием и с со "здвинутой ячейкой" . ну и действовать по желаемому алгоритму.
[vba]
Код
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        If [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then
            If [a7] > 0 Then
                Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7]
            End If
        End If
    Application.EnableEvents = True
End Sub
[/vba]

Или чуть короче для записи

[vba]
Код
Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        If [a7] > 0 and [a7] <> Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value Then _
                Cells(Cells(Rows.Count, 3).End(xlUp).Row + 1, 3).Value = [a7]
    Application.EnableEvents = True
End Sub
[/vba]

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

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