Note: The other languages of the website are Google-translated. Back to English

Как записать изменяющиеся значения в ячейке в Excel?

Как записывать каждое изменяющееся значение для часто меняющейся ячейки в Excel? Например, исходное значение в ячейке C2 равно 100, при изменении числа 100 на 200 исходное значение 100 будет автоматически отображаться в ячейке D2 для записи. Измените 200 на 300, число 200 будет вставлено в ячейку D3, при изменении 300 на 400 отобразится 300 на D4 и так далее. Метод, описанный в этой статье, может помочь вам в этом.

Записывать изменяющиеся значения в ячейку с кодом VBA


Записывать изменяющиеся значения в ячейку с кодом VBA

Приведенный ниже код VBA может помочь вам записать каждое изменяющееся значение в ячейке в Excel. Пожалуйста, сделайте следующее.

1. На листе, содержащем ячейку, в которую нужно записать изменяющиеся значения, щелкните правой кнопкой мыши вкладку листа и затем щелкните Просмотреть код из контекстного меню. Смотрите скриншот:

2. Затем Microsoft Visual Basic для приложений окно открывается, скопируйте ниже код VBA в окно кода.

Код VBA: запись изменяющихся значений в ячейке

Dim xVal As String
'Update by Extendoffice 2018/8/22
Private Sub Worksheet_Change(ByVal Target As Range)
    Static xCount As Integer
    Application.EnableEvents = False
    If Target.Address = Range("C2").Address Then
        Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
    Else
        If xVal <> Range("C2").Value Then
         Range("D2").Offset(xCount, 0).Value = xVal
        xCount = xCount + 1
        End If
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    xVal = Range("C2").Value
End Sub

Заметки: В коде C2 - это ячейка, в которую вы хотите записывать все изменяющиеся значения. D2 - это ячейка, в которую вы заполняете первое изменяющееся значение C2.

3. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента каждый раз, когда вы меняете значения в ячейке C2, предыдущие изменяющиеся значения будут записываться в D2 и ячейках ниже D2.


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (50)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Hi


Это работает очень хорошо, если значение в C2 вводится каждый раз, но не работает, если C2 содержит формулу. Есть ли способ сделать то же самое, но с формулой в C2?


Спасибо за это простое решение.
Этот комментарий был сведен к минимуму модератором на сайте
Если вы узнаете, как его использовать, если C2 содержит формулу, пожалуйста, сообщите мне, как вы это сделали. Я не могу найти, как нигде в Интернете.
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Код был оптимизирован. Пожалуйста, попробуйте и спасибо за ваш комментарий.

Dim xVal как строка
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("C2").Адрес Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
Еще
Если xVal <> Диапазон("C2").Значение Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("C2"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
ХАЙ,



ВЫШЕ ВЫШЕ VBS ТОЛЬКО C2 ДВИГАТЬСЯ НА D2,



INEED C2 НА C55 ПЕРЕЙТИ НА D2 НА D55



МОЖЕТЕ ПОМОЧЬ И ОТПРАВИТЬ МНЕ alexmathew33@gmail.com
Этот комментарий был сведен к минимуму модератором на сайте
Пожалуйста, помогите мне в следующем сценарии:
Из листа 1:
A1=ЗНАЧЕНИЕ (изменения из-за RTD с формулой)
B2= ЗНАЧЕНИЕ1 (изменения из-за RTD с формулой)

Скопируйте все предыдущие значения ячеек A1, B1 в Sheet2 столбцов M, NOF Тот же excel или Sheet1 новой книги

Пожалуйста, поделитесь со мной на melukotahari@gmail.com

-Мелукота
Этот комментарий был сведен к минимуму модератором на сайте
МОЖЕМ ЛИ МЫ ПОЛУЧИТЬ VBS ДЛЯ ВЫШЕУКАЗАННОГО
Этот комментарий был сведен к минимуму модератором на сайте
Что делать, если ячейка C2 является формулой? Как записать значения C2, если это формула?
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Код был оптимизирован. Пожалуйста, попробуйте и спасибо за ваш комментарий.

Dim xVal как строка
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("C2").Адрес Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
Еще
Если xVal <> Диапазон("C2").Значение Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("C2"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
ХАЙ,



ВЫШЕ ВЫШЕ VBS ТОЛЬКО C2 ДВИГАТЬСЯ НА D2,



INEED C2 НА C55 ПЕРЕЙТИ НА D2 НА D55



МОЖЕТЕ ПОМОЧЬ И ОТПРАВИТЬ МНЕ alexmathew33@gmail.com
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Я очень ценю это руководство... Я пытаюсь записать измененное значение в другую таблицу. Например, я хочу записать значение листа1 C2 на лист2 D2. Можете ли вы предоставить скорректированный код?
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Могут ли записи быть горизонтальными, а не вертикальными?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, возможно ли, чтобы этот макрос записывал две отдельные ячейки в два отдельных столбца? Т.е. Могу ли я записывать все значения из A1 в столбце B и все значения C1 в столбце D?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Попробуйте метод из этой статьи:
Как запомнить или сохранить предыдущее значение измененной ячейки в Excel?
https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Этот комментарий был сведен к минимуму модератором на сайте
спасибо за это, но вместо того, чтобы продолжаться вечно, как я могу перезапустить первую ячейку после X раз?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Вы имеете в виду, что после записи X раз вы хотите вернуться к первому значению записи?
Извините, я не уверен, что понял ваш вопрос. Было бы неплохо, если бы вы могли предоставить скриншот того, что вы пытаетесь сделать.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо

но что я могу сделать, если мне нужно повторить это для многих ячеек
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо

но что я могу сделать, если мне нужно повторить это для сырого
Этот комментарий был сведен к минимуму модератором на сайте
Peki bu kaydı yatay olarak nasıl kaydedeceğiz. Satırlara değil Sütunlara kaydetmesini istiyorum. Тешеккюрлер
Этот комментарий был сведен к минимуму модератором на сайте
Как сохранить номер, как только он сгенерирован, а не после того, как сгенерирован новый номер? У меня проблема в том, что номер записывается не сразу, а после создания второго номера; это означает, что ни ячейка, которую я записываю, ни ячейка, которая является целью, не имеют номера... как я могу записать, как только номер сгенерирован? Спасибо за вашу помощь!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Джон,
Извините, не могу вам в этом помочь. Добро пожаловать, чтобы разместить любой вопрос на нашем форуме: https://www.extendoffice.com/forum.html. Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, можно ли применить это для более чем одной ячейки?
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Спасибо за код, но у меня вопрос

Есть ли способ изменить код, чтобы он записывал значение, если ячейка ежедневно или в определенные дни, которые я указываю в отдельном столбце?


Благодаря!
Этот комментарий был сведен к минимуму модератором на сайте
Попробуй это

Dim xVal как строка
Dim iVal как целое число
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
iVal = Application.WorksheetFunction.Count (диапазон («F: F»), 1)
xCount = iVal
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("C2").Адрес Тогда
Диапазон ("E3"). Смещение (xCount, 0). Значение = Диапазон ("C2"). Значение
Диапазон ("F3"). Смещение (xCount, 0). Значение = Сейчас
xCount = xCount + 1
Еще
Если xVal <> Диапазон("C2").Значение Тогда
Диапазон ("E3"). Смещение (xCount, 0). Значение = Диапазон ("C2"). Значение
Диапазон ("F3"). Смещение (xCount, 0). Значение = Сейчас
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("C2"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Я попробовал этот код для ячейки C2, которая содержит значения DDE, которые меняются каждую секунду. Я использую этот следующий код, но не работаю.

Dim xVal как строка
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("C2").Адрес Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
Еще
Если xVal <> Диапазон("C2").Значение Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("C2"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Какую версию Excel вы используете?
Этот комментарий был сведен к минимуму модератором на сайте
он работает, когда я ввожу данные, он не работает, когда я напрямую передаю данные в реальном времени в эту ячейку (=RTD(.....)). как я могу заставить его работать с RTD?
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо за уроки, мне хотелось бы знать, есть ли способ заставить просто ячейку вести себя как обычный калькулятор.
т.е. эта ячейка должна быть способна суммировать цифры, которые появляются в другой ячейке, сохраняя при этом видимой последнюю совокупную цифру.
Эта другая ячейка будет ключевой ячейкой или активной ячейкой.
Пример:
Ячейка 1: =2*5, ответ появляется в ячейке 2,
Ячейка 1: = 3 * 6.8, ответ добавляется к предыдущему значению, полученному из (2 * 5), и все еще отображается в ячейке 2.
Этот комментарий был сведен к минимуму модератором на сайте
Формула выше не работает для формул, только для ручного ввода. Есть ли способ изменить кодировку, чтобы она работала для ячеек, содержащих формулу?



Dim xVal как строка
'Обновить Extendoffice 2018/8/22
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("C2").Адрес Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
Еще
Если xVal <> Диапазон("C2").Значение Тогда
Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("C2"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Пожалуйста, попробуйте приведенный ниже VBA.



Dim xVal как строка

Private Sub Worksheet_Change (ByVal Target As Range)

Статический xCount как целое число

Application.EnableEvents = False

Если Целевой.Адрес = Диапазон("C2").Адрес Тогда

Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal

xCount = xCount + 1

Еще

Если xVal <> Диапазон("C2").Значение Тогда

Диапазон ("D2"). Смещение (xCount, 0). Значение = xVal

xCount = xCount + 1

End If

End If

Application.EnableEvents = True

End Sub

Private Sub Worksheet_SelectionChange (ByVal Target As Range)

xVal = Диапазон ("C2"). Значение

End Sub
Этот комментарий был сведен к минимуму модератором на сайте
не работает для формул
Этот комментарий был сведен к минимуму модератором на сайте
Однако этот мир прекрасен, мне нужно было применить этот код к 2 разным ячейкам, сохраняя изменяющиеся значения для каждой ячейки в отдельных соответствующих столбцах. Как можно изменить код? Спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Попробуйте метод из этой статьи:

Как запомнить или сохранить предыдущее значение измененной ячейки в Excel?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли адаптировать это и использовать с DDE/RTD? Работает нормально при изменении ячеек вручную, но не с DDE/RTD.
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли изменить это для работы с несколькими ячейками на одном листе?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Попробуйте метод из этой статьи:

Как запомнить или сохранить предыдущее значение измененной ячейки в Excel?

https://www.extendoffice.com/documents/excel/5056-excel-remember-save-previous-cell-value.html
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Я попытался использовать этот код для записи каждого изменения значения конкретной ячейки. Однако мне было интересно, может ли кто-нибудь помочь мне, изменив его, чтобы изменение значения собиралось на РАЗНОЙ вкладке, а также чтобы оно сохранялось каждый раз, когда книга закрывается. Поскольку он как бы переустанавливается каждый раз при открытии книги без сохранения предыдущих значений. Код: Dim xVal как строка
'Обновить Extendoffice 2018/8/22
Private Sub Worksheet_Change (ByVal Target As Range)
Статический xCount как целое число
Application.EnableEvents = False
Если Целевой.Адрес = Диапазон("J7").Адрес Тогда
Диапазон ("AB2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
Еще
Если xVal <> Диапазон("J7").Значение Тогда
Диапазон ("AB2"). Смещение (xCount, 0). Значение = xVal
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
xVal = Диапазон ("J7"). Значение
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, спасибо за ниже. Быстрый вопрос .... можете ли вы время от времени сбрасывать это, чтобы по вашему запросу вы могли получить макрос для удаления всех предыдущих номеров и снова начать запись номеров из ячейки D2? На данный момент записаны номера D2, D3, D4, D5, D6 и т.д.
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL