Среднее значение сместил в столбец D, а предыдущее значение столбца В помещается в столбец С Код в модуле листа[vba]
Код
Private Previous_Value Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("E3:E16,H3:H16,K3:K16,N3:N16,Q3:Q16,T3:T16"), Target) Is Nothing Then Previous_Value = Range("B" & Target.Row) End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("E3:E16,H3:H16,K3:K16,N3:N16,Q3:Q16,T3:T16"), Target) Is Nothing Then ActiveSheet.Unprotect Range("C" & Target.Row) = Previous_Value ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
[/vba] Код в модуле "Эта книга"[vba]
Код
Private Sub Workbook_Open() Range("A1").Select End Sub
[/vba]
Среднее значение сместил в столбец D, а предыдущее значение столбца В помещается в столбец С Код в модуле листа[vba]
Код
Private Previous_Value Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("E3:E16,H3:H16,K3:K16,N3:N16,Q3:Q16,T3:T16"), Target) Is Nothing Then Previous_Value = Range("B" & Target.Row) End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("E3:E16,H3:H16,K3:K16,N3:N16,Q3:Q16,T3:T16"), Target) Is Nothing Then ActiveSheet.Unprotect Range("C" & Target.Row) = Previous_Value ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
[/vba] Код в модуле "Эта книга"[vba]
Код
Private Sub Workbook_Open() Range("A1").Select End Sub
Еще раз объясню более подробно. после того как я поменяю все значения каждого столбца расчитывается среднее значение в столбец В - это 1цикл через некоторое время я снова меняю все данные (нужно чтобы когда я начинаю менять ексель подождал меня пока я все 6 столбцов поменяю) и как только заканчиваю, то есть 6 столбцов сначала первую сверху вниз, потом вторую сверху вниз и т д и заканчивая ячейкой Т15 все , пред. данные столбца в как бы копируются в с
Еще раз объясню более подробно. после того как я поменяю все значения каждого столбца расчитывается среднее значение в столбец В - это 1цикл через некоторое время я снова меняю все данные (нужно чтобы когда я начинаю менять ексель подождал меня пока я все 6 столбцов поменяю) и как только заканчиваю, то есть 6 столбцов сначала первую сверху вниз, потом вторую сверху вниз и т д и заканчивая ячейкой Т15 все , пред. данные столбца в как бы копируются в сmergin07
Сообщение отредактировал Serge_007 - Воскресенье, 16.03.2014, 18:58
что вы сделали с условным форматированием почему цвета другие
Я ничего не делал. Версии Эксель разные. После многократных конвертаций формулы УФ могли потеряться, если в них использованы функции отсутствующие в Эксель 2003. Это вы восстановите. Насчет макроса. Прочтите свое Сообщение №19 там написано что в идеале так, значит можно было сделать проще. У меня пока нет решения. Подумаю.
что вы сделали с условным форматированием почему цвета другие
Я ничего не делал. Версии Эксель разные. После многократных конвертаций формулы УФ могли потеряться, если в них использованы функции отсутствующие в Эксель 2003. Это вы восстановите. Насчет макроса. Прочтите свое Сообщение №19 там написано что в идеале так, значит можно было сделать проще. У меня пока нет решения. Подумаю.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Переделать пришлось много. Макрос переписывает значение из В в С только после изменения значения в Т Код в модуле листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("T3:T16"), Target) Is Nothing Then ActiveSheet.Unprotect Range("C" & Target.Row) = Range("B" & Target.Row) Range("AG" & Target.Row + 32).Copy Range("B" & Target.Row).PasteSpecial Paste:=xlPasteValues ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
[/vba] Код в модуле "Эта книга"[vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = False ActiveSheet.Unprotect Range("AG36:AG48").Copy Range("B4:B16").PasteSpecial Paste:=xlPasteValues Range("A1").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Application.ScreenUpdating = True End Sub
[/vba]
Форматы и форматы УФ думаю можно вернуть копированием всего листа и вставкой, Специальная вставка - форматы.
Переделать пришлось много. Макрос переписывает значение из В в С только после изменения значения в Т Код в модуле листа[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Range("T3:T16"), Target) Is Nothing Then ActiveSheet.Unprotect Range("C" & Target.Row) = Range("B" & Target.Row) Range("AG" & Target.Row + 32).Copy Range("B" & Target.Row).PasteSpecial Paste:=xlPasteValues ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
[/vba] Код в модуле "Эта книга"[vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = False ActiveSheet.Unprotect Range("AG36:AG48").Copy Range("B4:B16").PasteSpecial Paste:=xlPasteValues Range("A1").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Application.ScreenUpdating = True End Sub
[/vba]
Форматы и форматы УФ думаю можно вернуть копированием всего листа и вставкой, Специальная вставка - форматы.AlexM
Чуть чуть переделал формулу в макросе, теперь последним нужно менять столбец Е, так как у него нет пустых значений, и еще когда было на столбце Т курсор постоянно перескакивал на столбец Е после ввода значения и нажатия ентер, в целом все замечательно реализовал задуманное, но есть одно но,
Нужно тоже самое реализовать на второй таблице, когда я первый раз задавал вопрос, я думал мне подскажут идею и а дальше сам сделаю но оказалось это все гораздо сложнее,
я думаю со второй сложностей не возникнет
Чуть чуть переделал формулу в макросе, теперь последним нужно менять столбец Е, так как у него нет пустых значений, и еще когда было на столбце Т курсор постоянно перескакивал на столбец Е после ввода значения и нажатия ентер, в целом все замечательно реализовал задуманное, но есть одно но,
Нужно тоже самое реализовать на второй таблице, когда я первый раз задавал вопрос, я думал мне подскажут идею и а дальше сам сделаю но оказалось это все гораздо сложнее,
Пришлось формулы из диапазона В20:В26 перенести в D20:D26 и скрыть белым шрифтом. Сейчас в диапазонах В20:В26 и С20:С26 значения одинаковые, но когда будете менять данные в столбце Е в С20:С26 будут появляться предыдущие. Посмотрите файл и проверьте.
Пришлось формулы из диапазона В20:В26 перенести в D20:D26 и скрыть белым шрифтом. Сейчас в диапазонах В20:В26 и С20:С26 значения одинаковые, но когда будете менять данные в столбце Е в С20:С26 будут появляться предыдущие. Посмотрите файл и проверьте.AlexM
При любом изменении в первой таблице эти формулы пересчитываются. А вам надо, чтобы изменение происходило только после изменения значения в столбце Е. Сейчас формулы пересчитываются, но вы этого не видите.
При любом изменении в первой таблице эти формулы пересчитываются. А вам надо, чтобы изменение происходило только после изменения значения в столбце Е. Сейчас формулы пересчитываются, но вы этого не видите.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
При любом изменении в первой таблице эти формулы пересчитываются. А вам надо, чтобы изменение происходило только после изменения значения в столбце Е. Сейчас формулы пересчитываются, но вы этого не видите.
Здравствуйте, помогите пожалуйста, после того как убрал некоторые данные все пошло не так
При любом изменении в первой таблице эти формулы пересчитываются. А вам надо, чтобы изменение происходило только после изменения значения в столбце Е. Сейчас формулы пересчитываются, но вы этого не видите.
Здравствуйте, помогите пожалуйста, после того как убрал некоторые данные все пошло не такmergin07
If Not Intersect(Range("E13:E13"), Target) Is Nothing Then надо If Not Intersect(Range("E3:E13"), Target) Is Nothing Then
в этом случае, нижняя таблица меняется при заполнении каждой ячейки от Е3 до Е13, а надо чтобы все менялось когда все заполнилось, когда меняем последнюю, раньше работало, сейчас что то нет
If Not Intersect(Range("E13:E13"), Target) Is Nothing Then надо If Not Intersect(Range("E3:E13"), Target) Is Nothing Then
в этом случае, нижняя таблица меняется при заполнении каждой ячейки от Е3 до Е13, а надо чтобы все менялось когда все заполнилось, когда меняем последнюю, раньше работало, сейчас что то нетmergin07
Посмотрите, раньше так же было, при изменении Е4 менялись значения B4:C4 и значения в B17:C17
ну да, 2 я таблица не ждет пока я заполню первую, поэтому во втором все время значения меняются, когда я меняю в первом, Е4 Е5 Е6 например. Месяц назад я в макросе сделал E13 и Е13 было все ок, но как только убрал некоторые столбцы которые мне сейчас уже не нужно это перестало работать
Посмотрите, раньше так же было, при изменении Е4 менялись значения B4:C4 и значения в B17:C17
ну да, 2 я таблица не ждет пока я заполню первую, поэтому во втором все время значения меняются, когда я меняю в первом, Е4 Е5 Е6 например. Месяц назад я в макросе сделал E13 и Е13 было все ок, но как только убрал некоторые столбцы которые мне сейчас уже не нужно это перестало работатьmergin07