Страницы: 1
RSS
Перенос данных с одного листа в другой
 
посмотрите аттач.    
a5:c5 требуется переместить на лист2 в следующую пустую строку, в качестве условия можно ввести символ (н-р "0")  
 
я вижу 2 способа.  
1) выделить мышой всю строку с данными, вырезать, опять выделить, удалить строку, перейти на другой лист, вставить в следующую пустую строку  
2) задействовать для формулы правый пустой столбец, в котором при вводе символа в ячейку строки,которую нужно переместить,и нажатии Ентер происходит собственно автоперенос.  
3) с пом. макроса.  
конечно же хочется п.2,да и вообще обойтись без макроса, но если уж ничего не выйдет, то...как грится будем плясать от того что можно.
 
Никакая формула не удалит вам строку с данными...  
Нужен макрос - причём простейший.  
 
Пример в файле: http://excelvba.ru/XL_Files/Sample__01-12-2010__18-08-43.zip  
 
Вот весь код:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Column = 4 And Target.Count = 1 And Target.Cells(1) = 0 Then  
       Target.EntireRow.Cells(1).Resize(, 3).Copy Лист2.Range("a65000").End(xlUp).Offset(1)  
       Target.EntireRow.Delete  
   End If  
End Sub
 
Забыл сказать - для переноса строки достаточно в ячейку 4-го столбца поставить 0  
и строка будет автоматически перенесена на второй лист.
 
а как быть если столбцов заполнено 10,а в 11 надо "0" ставить  
изменил часть макроса    
If Target.Column = 4  
на  
If Target.Column = 11  
не робит.
 
разобрался с этим.  
а подскажите как изменить условие макроса для того, чтобы перенос получался не просто по "0" а по вводу совершенно любых значений.  
в моем случае.    
пишем дату,потом ентер и все это дело (с датой) переносится на другой лист.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Column = 11 And Target.Count = 1 And Len(Target.Cells(1)) > 0 Then  
       Target.EntireRow.Cells(1).Resize(, 11).Copy Лист2.Range("a65000").End(xlUp).Offset(1)  
       Target.EntireRow.Delete  
   End If  
End Sub
 
и последнее.  
очень желательно.чтобы была проверка.  
н-р вместо "0" пишем дату,обязательно в формате ДД.ММ.ГГ (автоформат екселя запрещаем!)  
и если введены цифры и точки то переносим вместе с ними.  
на этом точно финал будет.  
спасибо за понимание.
 
я к тому что надо обезопасить себя от случайного ввода только одной лишь "." или <пробел>  
а то запись улетит а ты и не заметишь
 
попробуйте так:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Target.Column = 11 And Target.Count = 1 And Target.Cells(1).text like "##.##.##" Then  
Target.EntireRow.Cells(1).Resize(, 11).Copy Лист2.Range("a65000").End(xlUp).Offset(1)  
Target.EntireRow.Delete  
End If  
End Sub
 
теперь поведение такое  
в 11 ячейку вбиваем любую цифру - улетает на другой лист строка  
а если пишет ДД.ММ.ГГ то никуда ничо не улетает,и в свою очередь эта ячейка со вбитыми данным приобретает автоформат,после чего дата превращется в ДД.ММ.ГГГГ
 
таки простите за навязчивость.  
можно до конца решение?
Страницы: 1
Читают тему
Наверх
Loading...