Есть дамп с базы данных, где есть номер материала (выделено желтым), его краткое описание (зеленым) и длинное (красным) разбитое на несколько строк.
Подскажите, пожалуйста, как собрать это длинное описание в следующем столбце, напротив краткого (разделять символом ";"). Там еще через каждые 57 строк лишняя информация появляется (report/user/date), но она не мешает так как не заносится в поле с номером/описанием.
Добрый день,
Еще один вопрос про объединение )
Есть дамп с базы данных, где есть номер материала (выделено желтым), его краткое описание (зеленым) и длинное (красным) разбитое на несколько строк.
Подскажите, пожалуйста, как собрать это длинное описание в следующем столбце, напротив краткого (разделять символом ";"). Там еще через каждые 57 строк лишняя информация появляется (report/user/date), но она не мешает так как не заносится в поле с номером/описанием.user0
Не совсем. У вас сейчас копируется содержимое зеленой клетки n+1 раз в соседний столбец. Мне же необходимо, чтобы объединялось только то что в красных ячейках. Очищать потом красные ячейки не обязательно.
ps: там две вкладки - data (как оно выглядит в начале) и result (то как должно получиться в итоге).
pps: могу почистить и обновить файл примера, если нужно.
Не совсем. У вас сейчас копируется содержимое зеленой клетки n+1 раз в соседний столбец. Мне же необходимо, чтобы объединялось только то что в красных ячейках. Очищать потом красные ячейки не обязательно.
ps: там две вкладки - data (как оно выглядит в начале) и result (то как должно получиться в итоге).
pps: могу почистить и обновить файл примера, если нужно.user0
Сообщение отредактировал user0 - Среда, 28.12.2016, 07:52
Sub ertert() Dim r As Range On Error Resume Next For Each r In Range("B1:B" & Cells(Rows.Count, "F").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Areas If r.Count > 1 Then r(0, 6).Value = Replace(Replace(Join(Filter(Split("~" & _ Join(Application.Transpose(r.Offset(, 4).Value), _ "~|~") & "~", "|"), "~~", False), "|"), "~", ""), "|", "; ") Else r(0, 6).Value = r(1, 5).Value End If Next r End Sub
[/vba]
как вариант [vba]
Код
Sub ertert() Dim r As Range On Error Resume Next For Each r In Range("B1:B" & Cells(Rows.Count, "F").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Areas If r.Count > 1 Then r(0, 6).Value = Replace(Replace(Join(Filter(Split("~" & _ Join(Application.Transpose(r.Offset(, 4).Value), _ "~|~") & "~", "|"), "~~", False), "|"), "~", ""), "|", "; ") Else r(0, 6).Value = r(1, 5).Value End If Next r End Sub
Помогите допилить ваш макрос под мои цели, смысл тот же, только ничего удалять и пропускать не надо... я попытался но какая то лажа получается...
Помогите допилить ваш макрос под мои цели, смысл тот же, только ничего удалять и пропускать не надо... я попытался но какая то лажа получается...yellsamara