Добрый день! Подскажите, пожалуйста, как с помощью формулы решить задачу: перенос части текста до запятой из одной ячейки А1 в строке 1, в другую ячейку А2 в строке 2, при этом перенести все данные из других ячеек строки 1, в соответствующие ячейки строки 2 ? Так же необходимо учесть, что в строке 2 уже имеются данные, поэтому при использовании формулы, данные из строки 2 должны переместиться в строку 3, а данные из строки 3 должны переместиться в 4-ую и так далее. Пример прилагаю.
Заранее спасибо!
Добрый день! Подскажите, пожалуйста, как с помощью формулы решить задачу: перенос части текста до запятой из одной ячейки А1 в строке 1, в другую ячейку А2 в строке 2, при этом перенести все данные из других ячеек строки 1, в соответствующие ячейки строки 2 ? Так же необходимо учесть, что в строке 2 уже имеются данные, поэтому при использовании формулы, данные из строки 2 должны переместиться в строку 3, а данные из строки 3 должны переместиться в 4-ую и так далее. Пример прилагаю.
Sub test() Dim lr&, i& lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 1 Step -1 If InStr(Cells(i, "d"), Chr(10)) Then temp = Split(Cells(i, "d"), ";" & Chr(10)) Rows(i).Resize(UBound(temp)).Insert Cells(i, 1).Resize(UBound(temp), 3) = Cells(i + UBound(temp), 1).Resize(, 3).Value Cells(i, "e").Resize(UBound(temp)) = Cells(i + UBound(temp), "e").Value Cells(i, "d").Resize(UBound(temp) + 1).Value = Application.Transpose(temp) End If Next i End Sub
[/vba]
grigor30, здравствуйте, макросом пойдет? [vba]
Код
Sub test() Dim lr&, i& lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 1 Step -1 If InStr(Cells(i, "d"), Chr(10)) Then temp = Split(Cells(i, "d"), ";" & Chr(10)) Rows(i).Resize(UBound(temp)).Insert Cells(i, 1).Resize(UBound(temp), 3) = Cells(i + UBound(temp), 1).Resize(, 3).Value Cells(i, "e").Resize(UBound(temp)) = Cells(i + UBound(temp), "e").Value Cells(i, "d").Resize(UBound(temp) + 1).Value = Application.Transpose(temp) End If Next i End Sub
grigor30, ээ... а где макрос? Как же он должен работать, если его нет? [vba]
Код
Sub test() Dim lr&, i& lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 1 Step -1 If InStr(Cells(i, "d"), ";") Then temp = Split(Cells(i, "d"), ";") Rows(i).Resize(UBound(temp)).Insert Cells(i, 1).Resize(UBound(temp), 3) = Cells(i + UBound(temp), 1).Resize(, 3).Value Cells(i, "e").Resize(UBound(temp)) = Cells(i + UBound(temp), "e").Value Cells(i, "d").Resize(UBound(temp) + 1).Value = Application.Transpose(temp) End If Next i End Sub
[/vba]
grigor30, ээ... а где макрос? Как же он должен работать, если его нет? [vba]
Код
Sub test() Dim lr&, i& lr = Cells(Rows.Count, 1).End(xlUp).Row For i = lr To 1 Step -1 If InStr(Cells(i, "d"), ";") Then temp = Split(Cells(i, "d"), ";") Rows(i).Resize(UBound(temp)).Insert Cells(i, 1).Resize(UBound(temp), 3) = Cells(i + UBound(temp), 1).Resize(, 3).Value Cells(i, "e").Resize(UBound(temp)) = Cells(i + UBound(temp), "e").Value Cells(i, "d").Resize(UBound(temp) + 1).Value = Application.Transpose(temp) End If Next i End Sub
Manyasha, и последний вопрос по этому макросу. Как изменится формула, если столбцов, которые нужно обработать целых 2? Пример прилагаю. Заранее спасибо за ответ.
Manyasha, и последний вопрос по этому макросу. Как изменится формула, если столбцов, которые нужно обработать целых 2? Пример прилагаю. Заранее спасибо за ответ.grigor30