Здравствуйте уважаемые форумчане! У меня возникла проблема с созданием таблицы учета данных эл.счетчиков, ни как не могу сообразить как сделать копирование из одной ячейки в другую ячейку, при выполнении условия что в какой то другой ячейке (что то вроде кнопки) возникает ноль или единица, при этом если в "кнопочной" ячейке вписать значение "1", то копирование происходит, если "0", то ячейка остается не измененной, потому как в ней содержится тоже какое то нужное значение. Я все нарисовал в рисунке который прикрепил к сообщению. Я сначала подумал что все просто, функция ЕСЛИ(), условие: ячейка(кнопка)=1, то копировать из ячейки допустим А1 в ячейку В1, это все понятно, а вот когда условие не выполняется как в функции ЕСЛИ(), организовать операцию "ни чего не делать", то есть чтобы значение в ячейке В1 не изменялось, при значении ячейки кнопки =0, когда значение ячейки А1 может изменится или меняется???? Вот где собака зарыта:) Буду очень признателен вам, а то уже всю голову поломал
Здравствуйте уважаемые форумчане! У меня возникла проблема с созданием таблицы учета данных эл.счетчиков, ни как не могу сообразить как сделать копирование из одной ячейки в другую ячейку, при выполнении условия что в какой то другой ячейке (что то вроде кнопки) возникает ноль или единица, при этом если в "кнопочной" ячейке вписать значение "1", то копирование происходит, если "0", то ячейка остается не измененной, потому как в ней содержится тоже какое то нужное значение. Я все нарисовал в рисунке который прикрепил к сообщению. Я сначала подумал что все просто, функция ЕСЛИ(), условие: ячейка(кнопка)=1, то копировать из ячейки допустим А1 в ячейку В1, это все понятно, а вот когда условие не выполняется как в функции ЕСЛИ(), организовать операцию "ни чего не делать", то есть чтобы значение в ячейке В1 не изменялось, при значении ячейки кнопки =0, когда значение ячейки А1 может изменится или меняется???? Вот где собака зарыта:) Буду очень признателен вам, а то уже всю голову поломал tench72
Картинка это хорошо, но файл все равно нужен. Тем более он у вас есть. Думаю задачу можно решить макросом. Что может упростить работу с таблицей учета. Например так. Ячейки с 0 и 1 (кнопки) не нужны. При вводе новых показаний на Лист1 В3 на Лист2 значение текущего показания копируется в ячейку предыдущего показания, а на место текущего копируется значение с Лист1 В3. При использовании макроса алгоритм может быть практически любой.
Картинка это хорошо, но файл все равно нужен. Тем более он у вас есть. Думаю задачу можно решить макросом. Что может упростить работу с таблицей учета. Например так. Ячейки с 0 и 1 (кнопки) не нужны. При вводе новых показаний на Лист1 В3 на Лист2 значение текущего показания копируется в ячейку предыдущего показания, а на место текущего копируется значение с Лист1 В3. При использовании макроса алгоритм может быть практически любой.AlexM
AlexM, Спасибо за ответ! Но есть одно Но я не профи в EXEL :(, и макросы писать не умею и как их писать, для каждой ячейки, или написав для одной потом копировать в остальные? А запускать макросы как, ручками, как в фотошопе? Вот в фотошопе я знаю как делать макросы и очень хорошо, а вот в EXEL, к сожалению нет. А таблица учета на самом деле большая ну счетчиков много не менее 60! Файла как такового нет, я его не сделал, только в пробном варианте для одного счетчика, как на картинке. А что нельзя ли решить проблему с помощью формулы? Когда я использую формулу ЕСЛИ(), как сделать чтобы при выполнении условия ячейка копировалась, а при не выполнении условия, ни каких действий с ячейкой не производилось. Ну типа оператора NOP (нет операции) в ассемблере, нет ли таких функций или действий в EXEL? Если я в формуле вставляю ссылку на саму ячейку, то EXEL мне сообщает о циклической ссылке что не есть гуд
AlexM, Спасибо за ответ! Но есть одно Но я не профи в EXEL :(, и макросы писать не умею и как их писать, для каждой ячейки, или написав для одной потом копировать в остальные? А запускать макросы как, ручками, как в фотошопе? Вот в фотошопе я знаю как делать макросы и очень хорошо, а вот в EXEL, к сожалению нет. А таблица учета на самом деле большая ну счетчиков много не менее 60! Файла как такового нет, я его не сделал, только в пробном варианте для одного счетчика, как на картинке. А что нельзя ли решить проблему с помощью формулы? Когда я использую формулу ЕСЛИ(), как сделать чтобы при выполнении условия ячейка копировалась, а при не выполнении условия, ни каких действий с ячейкой не производилось. Ну типа оператора NOP (нет операции) в ассемблере, нет ли таких функций или действий в EXEL? Если я в формуле вставляю ссылку на саму ячейку, то EXEL мне сообщает о циклической ссылке что не есть гуд tench72
Для работы макроса надо разрешить их исполнение в настройках безопасности Excel. Макрос, который в приложенном файле предыдущего сообщения запускается сам по событию изменения значения в ячейке. Запуск происходит если изменения в столбце В на Лист1. Так что добавляйте счетчики сколько хотите. Алгоритм такой. Вы меняете значение в любой ячейке столбца В на лист1. Макрос запускается. В цикле ищется счетчик на Лист2 и данные копируются, переносятся и рассчитываются для данного счетчика. Если счетчик новый и на лист2 все ячейки пустые, то значение с Лист1 копируется сразу в две ячейки в столбце В и С Код макроса в Спойлере
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) Dim iRow As Long Set ws2 = Worksheets("Лист2") If Target.Column <> 2 Then Exit Sub For iRow = 1 To ws2.Columns(1).End(xlDown).Row On Error GoTo Error1 If Target.Offset(0, -1) = ws2.Range("A" & iRow) Then ws2.Range("C" & iRow) = ws2.Range("B" & iRow) ws2.Range("B" & iRow) = Target If ws2.Range("C" & iRow) = "" Then ws2.Range("C" & iRow) = Target ws2.Range("D" & iRow) = ws2.Range("B" & iRow) - ws2.Range("C" & iRow) ws2.Range("E" & iRow) = ws2.Range("D" & iRow) * ws2.Range("F" & iRow) Exit For End If Next iRow Error1: End Sub
[/vba]
В файле код можно посмотреть нажав Alt+F11
Для работы макроса надо разрешить их исполнение в настройках безопасности Excel. Макрос, который в приложенном файле предыдущего сообщения запускается сам по событию изменения значения в ячейке. Запуск происходит если изменения в столбце В на Лист1. Так что добавляйте счетчики сколько хотите. Алгоритм такой. Вы меняете значение в любой ячейке столбца В на лист1. Макрос запускается. В цикле ищется счетчик на Лист2 и данные копируются, переносятся и рассчитываются для данного счетчика. Если счетчик новый и на лист2 все ячейки пустые, то значение с Лист1 копируется сразу в две ячейки в столбце В и С Код макроса в Спойлере
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) Dim iRow As Long Set ws2 = Worksheets("Лист2") If Target.Column <> 2 Then Exit Sub For iRow = 1 To ws2.Columns(1).End(xlDown).Row On Error GoTo Error1 If Target.Offset(0, -1) = ws2.Range("A" & iRow) Then ws2.Range("C" & iRow) = ws2.Range("B" & iRow) ws2.Range("B" & iRow) = Target If ws2.Range("C" & iRow) = "" Then ws2.Range("C" & iRow) = Target ws2.Range("D" & iRow) = ws2.Range("B" & iRow) - ws2.Range("C" & iRow) ws2.Range("E" & iRow) = ws2.Range("D" & iRow) * ws2.Range("F" & iRow) Exit For End If Next iRow Error1: End Sub
AlexM извините за незнание, но при выполнении макроса выскакивает сообщение: Ошибка компиляции Не удается найти проект или библиотеку (Can't find project or library) Где ее взять и как подключить к макросу? Спасибо!
AlexM извините за незнание, но при выполнении макроса выскакивает сообщение: Ошибка компиляции Не удается найти проект или библиотеку (Can't find project or library) Где ее взять и как подключить к макросу? Спасибо! tench72
Странно, это в моем файле так получается? Я крайне редко подключаю дополнительные библиотеки. Подключены лишь те что по умолчанию. У меня Excel 2003. Подключены: Visual Basic For Applications, Microsoft Excel 11.0 Object Library, OLE Automation, Microsoft Office 11.0 Object Library. Какие библиотеки подключены можно так. В редакторе VBA меню Tools - References.
Странно, это в моем файле так получается? Я крайне редко подключаю дополнительные библиотеки. Подключены лишь те что по умолчанию. У меня Excel 2003. Подключены: Visual Basic For Applications, Microsoft Excel 11.0 Object Library, OLE Automation, Microsoft Office 11.0 Object Library. Какие библиотеки подключены можно так. В редакторе VBA меню Tools - References.
Большое человеческое спасибо Вам AlexM!!!!!!!!!!!!!!!! Слава богу что еще остались люди, которые могут просто помочь!!!!!!!!! Да да именно на халяву!!!!!!! Потому как помощь за не халяву это уже не помощь:) а просто бизнес и ни чего личного:))))) Будем изучать exel глубже, всем здоровья и удачи и еще раз спасибо!
Большое человеческое спасибо Вам AlexM!!!!!!!!!!!!!!!! Слава богу что еще остались люди, которые могут просто помочь!!!!!!!!! Да да именно на халяву!!!!!!! Потому как помощь за не халяву это уже не помощь:) а просто бизнес и ни чего личного:))))) Будем изучать exel глубже, всем здоровья и удачи и еще раз спасибо!tench72
Здравствуйте, собрал такой макрос. Проверяет время каждые 10 сек и если время до 12,00 то он стирает значение из ячейки "А1" Есть несколько вопросов. 1) Как сделать чтоб он проверял изменения в ячейке Б1?Если значение в ячейке B1 изменилось то значение из ячейки А1 удаляются. If Range("B1").value <> 'Не знаю что писать дальше Then 2) Как сделать сравнение двух ячеек? Если в "А1" вписывается число, то тогда "B1" становиться пустой и наоборот если заполняется "B1" то "А1" становится пустой 3) Можно ли для пункта Nr2 прописать макрос без времени, а чтоб это делалось сразу автоматически а не через 10 сек ( Можно конечно изменить время, поставить не 10 сек а 1 сек, но хотелось бы без него )
Sub myMacro() Dim sh As Worksheet Application.OnTime Now() + TimeSerial(0, 0, 10), "myMacro" Set sh = ActiveWorkbook.Sheets(1) If Time < 0.5 Then Debug.Print Time ActiveSheet.Range("A1").ClearContents End If End Sub
Здравствуйте, собрал такой макрос. Проверяет время каждые 10 сек и если время до 12,00 то он стирает значение из ячейки "А1" Есть несколько вопросов. 1) Как сделать чтоб он проверял изменения в ячейке Б1?Если значение в ячейке B1 изменилось то значение из ячейки А1 удаляются. If Range("B1").value <> 'Не знаю что писать дальше Then 2) Как сделать сравнение двух ячеек? Если в "А1" вписывается число, то тогда "B1" становиться пустой и наоборот если заполняется "B1" то "А1" становится пустой 3) Можно ли для пункта Nr2 прописать макрос без времени, а чтоб это делалось сразу автоматически а не через 10 сек ( Можно конечно изменить время, поставить не 10 сек а 1 сек, но хотелось бы без него )
Sub myMacro() Dim sh As Worksheet Application.OnTime Now() + TimeSerial(0, 0, 10), "myMacro" Set sh = ActiveWorkbook.Sheets(1) If Time < 0.5 Then Debug.Print Time ActiveSheet.Range("A1").ClearContents End If End SubAndrej092