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

Вход

Регистрация

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

 

= Мир MS Excel/Реакция на изменения данных в ячейках. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Реакция на изменения данных в ячейках.
rafsit61 Дата: Суббота, 01.02.2014, 12:59 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 114
Репутация: 1 ±
Замечаний: 20% ±

Excel 360
Доброго дня всем!
За циклился, не получается реализовать такую функцию
Если в ячейках массива (А3:O35) будут любые изменения,
тогда в ячейку N1 поставить сегодняшнею дату
Код
=ЕСЛИ((А3:O35)<>"";"СЕГОДНЯ";)
К сообщению приложен файл: 5394990.xlsx (8.7 Kb)


Сообщение отредактировал Serge_007 - Суббота, 01.02.2014, 13:07
 
Ответить
СообщениеДоброго дня всем!
За циклился, не получается реализовать такую функцию
Если в ячейках массива (А3:O35) будут любые изменения,
тогда в ячейку N1 поставить сегодняшнею дату
Код
=ЕСЛИ((А3:O35)<>"";"СЕГОДНЯ";)

Автор - rafsit61
Дата добавления - 01.02.2014 в 12:59
Serge_007 Дата: Суббота, 01.02.2014, 13:09 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
не получается реализовать такую функцию
И не получится. Функции не могут отслеживать изменения данных
[p.s.]Вы приложили абсолютно пустой файл[/p.s.]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
не получается реализовать такую функцию
И не получится. Функции не могут отслеживать изменения данных
[p.s.]Вы приложили абсолютно пустой файл[/p.s.]

Автор - Serge_007
Дата добавления - 01.02.2014 в 13:09
rafsit61 Дата: Суббота, 01.02.2014, 13:21 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 114
Репутация: 1 ±
Замечаний: 20% ±

Excel 360
Serge_007, Очень жаль, попробую поискать возможность отследить изменение хотя бы одной ячейки привязав его к дате,
P.S.Вы приложили абсолютно пустой файл

извините я забыл его запомнить.
К сообщению приложен файл: 4591058.xlsx (18.3 Kb)
 
Ответить
СообщениеSerge_007, Очень жаль, попробую поискать возможность отследить изменение хотя бы одной ячейки привязав его к дате,
P.S.Вы приложили абсолютно пустой файл

извините я забыл его запомнить.

Автор - rafsit61
Дата добавления - 01.02.2014 в 13:21
AlexM Дата: Суббота, 01.02.2014, 13:45 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
А если так?
К сообщению приложен файл: 4591058_new.xls (44.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеА если так?

Автор - AlexM
Дата добавления - 01.02.2014 в 13:45
Serge_007 Дата: Суббота, 01.02.2014, 13:49 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
AlexM, это не средствами Excel ;)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеAlexM, это не средствами Excel ;)

Автор - Serge_007
Дата добавления - 01.02.2014 в 13:49
gling Дата: Суббота, 01.02.2014, 13:54 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2558
Репутация: 696 ±
Замечаний: 0% ±

2010
Посмотрите может подойдет. Макросы должны быть включены.
К сообщению приложен файл: rafsit611.xls (47.0 Kb)


ЯД-41001506838083
 
Ответить
СообщениеПосмотрите может подойдет. Макросы должны быть включены.

Автор - gling
Дата добавления - 01.02.2014 в 13:54
AlexM Дата: Суббота, 01.02.2014, 13:56 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
это не средствами Excel

Об этом было в задании?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
это не средствами Excel

Об этом было в задании?

Автор - AlexM
Дата добавления - 01.02.2014 в 13:56
Serge_007 Дата: Суббота, 01.02.2014, 14:02 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Эта ветка - Вопросы по Excel ;)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЭта ветка - Вопросы по Excel ;)

Автор - Serge_007
Дата добавления - 01.02.2014 в 14:02
rafsit61 Дата: Суббота, 01.02.2014, 14:05 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 114
Репутация: 1 ±
Замечаний: 20% ±

Excel 360
Спасибо всем за реакцию, буду разбираться
 
Ответить
СообщениеСпасибо всем за реакцию, буду разбираться

Автор - rafsit61
Дата добавления - 01.02.2014 в 14:05
rafsit61 Дата: Суббота, 01.02.2014, 14:23 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 114
Репутация: 1 ±
Замечаний: 20% ±

Excel 360
AlexM, Да работает, только не пойму- это макрос? Если да, как мне перенести его на мой основной Файл. В Макросах его не видно на ленте инструментов,
То же самое в отношении предложения gling,
 
Ответить
СообщениеAlexM, Да работает, только не пойму- это макрос? Если да, как мне перенести его на мой основной Файл. В Макросах его не видно на ленте инструментов,
То же самое в отношении предложения gling,

Автор - rafsit61
Дата добавления - 01.02.2014 в 14:23
rafsit61 Дата: Суббота, 01.02.2014, 14:47 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 114
Репутация: 1 ±
Замечаний: 20% ±

Excel 360
gling, Ага, нашёл, где это зарыто[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Range("N1").Value = Now
Range("N1").NumberFormat = "dd.mm.yyyy" & Chr(10) & "hh:mm"
End Sub
[/vba]Возможно ли задать всё таки изменения только области (А3:O35), а не всего файла, потому что в этом же файле, нужно будет следить за изменениями таких же других участков?


Сообщение отредактировал Serge_007 - Суббота, 01.02.2014, 14:54
 
Ответить
Сообщениеgling, Ага, нашёл, где это зарыто[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Range("N1").Value = Now
Range("N1").NumberFormat = "dd.mm.yyyy" & Chr(10) & "hh:mm"
End Sub
[/vba]Возможно ли задать всё таки изменения только области (А3:O35), а не всего файла, потому что в этом же файле, нужно будет следить за изменениями таких же других участков?

Автор - rafsit61
Дата добавления - 01.02.2014 в 14:47
AlexM Дата: Суббота, 01.02.2014, 16:19 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
В Макросах его не видно на ленте инструментов

Ищите в модуле листа, на котором ваша таблица.
Код в моем файле учитывает диапазон
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A3:O35"), Target) Is Nothing Then Range("N1") = Date
End Sub
[/vba]
В него можно добавить строку как у gling.
И добавить еще диапазоны. Получится так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("A3:O35,T3:Z35"), Target) Is Nothing Then Range("N1") = Date
End Sub
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
В Макросах его не видно на ленте инструментов

Ищите в модуле листа, на котором ваша таблица.
Код в моем файле учитывает диапазон
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A3:O35"), Target) Is Nothing Then Range("N1") = Date
End Sub
[/vba]
В него можно добавить строку как у gling.
И добавить еще диапазоны. Получится так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("A3:O35,T3:Z35"), Target) Is Nothing Then Range("N1") = Date
End Sub
[/vba]

Автор - AlexM
Дата добавления - 01.02.2014 в 16:19
Diffuser Дата: Вторник, 03.06.2014, 16:44 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM, а подскажите, плз! Как преобразовать код, чтобы это срабатывало не при ручном вводе данных в ячейки этого диапазона, а если изменения в диапазоне производятся по формуле. Уже месяц не могу решения найти, не могу никак справиться с Worksheet Calculate. Знаний недостаточно.

Цитата
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("A3:O35,T3:Z35"), Target) Is Nothing Then Range("N1") = Date
End Sub


Сообщение отредактировал Diffuser - Вторник, 03.06.2014, 16:45
 
Ответить
СообщениеAlexM, а подскажите, плз! Как преобразовать код, чтобы это срабатывало не при ручном вводе данных в ячейки этого диапазона, а если изменения в диапазоне производятся по формуле. Уже месяц не могу решения найти, не могу никак справиться с Worksheet Calculate. Знаний недостаточно.

Цитата
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("A3:O35,T3:Z35"), Target) Is Nothing Then Range("N1") = Date
End Sub

Автор - Diffuser
Дата добавления - 03.06.2014 в 16:44
AlexM Дата: Вторник, 03.06.2014, 17:11 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Diffuser, Вам надо отслеживать изменение тех ячеек, которые являются аргументами формул.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеDiffuser, Вам надо отслеживать изменение тех ячеек, которые являются аргументами формул.

Автор - AlexM
Дата добавления - 03.06.2014 в 17:11
Diffuser Дата: Вторник, 03.06.2014, 17:52 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вот мой пример. Если в диапазоне C5:C3000 в результате пересчета формул меняется значение ячейки, то происходит очистка смежных ячеек в столбцах D, E и J. затем данные сортируются.
Цитата
Private Sub Worksheet_Change(ByVal target As Range)
If target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("C5:C3000"), target) Is Nothing Then Range("D5:E5,J5").ClearContents
With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("F5:F" & Range("D" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.SortFields.Add Key:=Range("G5:G" & Range("E" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.Apply
End With
End Sub


Этот код работает, если я вношу изменения C5:C3000 вручную.
--------------------------------------------------------------------------------------

А вот я нашел и применил другой код к одной ячейке, по Workshhet Calculate. Как этот код применить к каждой ячейке с C5 по C3000 я не знаю. Не прописывать же к каждой такой код?

Цитата
Private Sub Worksheet_Calculate()
Static OldVal1 As Variant, OldVal2 As Variant
If Range("C5").Value <> OldVal1 Then
OldVal1 = Range("C5").Value
Range("D5:E5,J5").ClearContents
End If
End Sub


Если в ячейке C5 в результате пересчета формулы меняется значение ячейки, то происходит очистка смежных ячеек в столбцах D5, E5 и J5. Код работает, но мне бы еще сюда вставить сортировку из первого кода:
Цитата
With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("F5:F" & Range("D" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.SortFields.Add Key:=Range("G5:G" & Range("E" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.Apply
End With
 
Ответить
СообщениеВот мой пример. Если в диапазоне C5:C3000 в результате пересчета формул меняется значение ячейки, то происходит очистка смежных ячеек в столбцах D, E и J. затем данные сортируются.
Цитата
Private Sub Worksheet_Change(ByVal target As Range)
If target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Range("C5:C3000"), target) Is Nothing Then Range("D5:E5,J5").ClearContents
With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("F5:F" & Range("D" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.SortFields.Add Key:=Range("G5:G" & Range("E" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.Apply
End With
End Sub


Этот код работает, если я вношу изменения C5:C3000 вручную.
--------------------------------------------------------------------------------------

А вот я нашел и применил другой код к одной ячейке, по Workshhet Calculate. Как этот код применить к каждой ячейке с C5 по C3000 я не знаю. Не прописывать же к каждой такой код?

Цитата
Private Sub Worksheet_Calculate()
Static OldVal1 As Variant, OldVal2 As Variant
If Range("C5").Value <> OldVal1 Then
OldVal1 = Range("C5").Value
Range("D5:E5,J5").ClearContents
End If
End Sub


Если в ячейке C5 в результате пересчета формулы меняется значение ячейки, то происходит очистка смежных ячеек в столбцах D5, E5 и J5. Код работает, но мне бы еще сюда вставить сортировку из первого кода:
Цитата
With ActiveWorkbook.Worksheets("Лист2").AutoFilter.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("F5:F" & Range("D" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.SortFields.Add Key:=Range("G5:G" & Range("E" & Rows.Count).End(xlUp).Row), Order:=xlAscending
.Apply
End With

Автор - Diffuser
Дата добавления - 03.06.2014 в 17:52
AlexM Дата: Вторник, 03.06.2014, 18:58 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Лучше файлик на 30 строк.
Думаю надо применить то что я в сообщении №14 посоветовал



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЛучше файлик на 30 строк.
Думаю надо применить то что я в сообщении №14 посоветовал

Автор - AlexM
Дата добавления - 03.06.2014 в 18:58
Diffuser Дата: Вторник, 03.06.2014, 19:41 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вот файлик.

Описание работы:

Есть два файла - "Инвентаризационная" и "База данных с группами123456789". В файле "База данных с группами123456789" ячейка C5 извлекает код из ячейки B17 в файле "Инвентаризационная". Моя главная задача: если в ячейке C5 в первом файле меняется код - очищаются ячейки D5, E5 и J5. И затем если D5, E5 и J5 становятся пустыми, то по коду моей сортировки они опускаются вниз.

Для наглядности того, что этот вариант работает. Меняем в ячейке B17 в файле "Инвентаризационная" номенклатурный код и видим, что файле "База данных с группами123456789" в ячейке C5 обновился код, но не очистились D5, E5 и J5. А вот если вручную сменить в ячейке C5 значение - D5, E5 и J5 очищаются и сортируются вниз.

По поводу отслеживания - поищу, спасибо!
К сообщению приложен файл: ___123456789.rar (74.9 Kb)
 
Ответить
СообщениеВот файлик.

Описание работы:

Есть два файла - "Инвентаризационная" и "База данных с группами123456789". В файле "База данных с группами123456789" ячейка C5 извлекает код из ячейки B17 в файле "Инвентаризационная". Моя главная задача: если в ячейке C5 в первом файле меняется код - очищаются ячейки D5, E5 и J5. И затем если D5, E5 и J5 становятся пустыми, то по коду моей сортировки они опускаются вниз.

Для наглядности того, что этот вариант работает. Меняем в ячейке B17 в файле "Инвентаризационная" номенклатурный код и видим, что файле "База данных с группами123456789" в ячейке C5 обновился код, но не очистились D5, E5 и J5. А вот если вручную сменить в ячейке C5 значение - D5, E5 и J5 очищаются и сортируются вниз.

По поводу отслеживания - поищу, спасибо!

Автор - Diffuser
Дата добавления - 03.06.2014 в 19:41
AlexM Дата: Среда, 04.06.2014, 00:32 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
У вас оказывается два файла, о чем вы написали только в последнем сообщении.
После конвертирования этих файлов в формат Excel2003 ни одна формула связи с файлом "Инвентаризационная" не работает из-за отличия расширений. Постоянно запускается Макрос1 и останавливается на ошибке.
Извините, я пока не знаю чем помочь.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеУ вас оказывается два файла, о чем вы написали только в последнем сообщении.
После конвертирования этих файлов в формат Excel2003 ни одна формула связи с файлом "Инвентаризационная" не работает из-за отличия расширений. Постоянно запускается Макрос1 и останавливается на ошибке.
Извините, я пока не знаю чем помочь.

Автор - AlexM
Дата добавления - 04.06.2014 в 00:32
Diffuser Дата: Среда, 04.06.2014, 10:16 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AlexM, гляньте еще пожалуйста вот этот вариант. Оба файла сделал в xls, код во втором файле скорректировал. Задача все та же. Заранее спасибо!
К сообщению приложен файл: zaq.zip (43.6 Kb)
 
Ответить
СообщениеAlexM, гляньте еще пожалуйста вот этот вариант. Оба файла сделал в xls, код во втором файле скорректировал. Задача все та же. Заранее спасибо!

Автор - Diffuser
Дата добавления - 04.06.2014 в 10:16
Diffuser Дата: Пятница, 13.06.2014, 13:12 | Сообщение № 20
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Задача чуть успростилась. Необходимо, чтобы по этому коду очищался не весь диапазон столбцов, а лишь в тех строках, в которых произошел пересчет и изменение значения ячейки.

[vba]
Код
Option Explicit

Private Sub Worksheet_Calculate()
   Dim r As Long
   Application.EnableEvents = False
   For r = 7 To 100
     If Cells(r, 3).Value <> ThreeC(r, 1) Then
       ThreeC(r, 1) = Cells(r, 3).Value: Cells(r, 12) = 0
       Cells(r, 5).Resize(1, 2).ClearContents: Cells(r, 10).ClearContents
     End If
   Next
   Application.EnableEvents = True
End Sub
[/vba]
 
Ответить
СообщениеЗадача чуть успростилась. Необходимо, чтобы по этому коду очищался не весь диапазон столбцов, а лишь в тех строках, в которых произошел пересчет и изменение значения ячейки.

[vba]
Код
Option Explicit

Private Sub Worksheet_Calculate()
   Dim r As Long
   Application.EnableEvents = False
   For r = 7 To 100
     If Cells(r, 3).Value <> ThreeC(r, 1) Then
       ThreeC(r, 1) = Cells(r, 3).Value: Cells(r, 12) = 0
       Cells(r, 5).Resize(1, 2).ClearContents: Cells(r, 10).ClearContents
     End If
   Next
   Application.EnableEvents = True
End Sub
[/vba]

Автор - Diffuser
Дата добавления - 13.06.2014 в 13:12
  • Страница 1 из 1
  • 1
Поиск:

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