Страницы: 1
RSS
Макрос для для дробления формулы по ссылкам
 
Добрый день форумчане! Помогите плиз написать макрос. Я в этом деле дилетант если честно. Какой макрос написать чтобы от ячейки где формула собирает с разных листов данные справа в ячейке выводились ссылки на каждый лист по отдельности? Буду благодарен!
 
макрофункция =ПОЛУЧИТЬ.ЯЧЕЙКУ(6;B4), а потом текстовыми функциями обработать
Лень двигатель прогресса, доказано!!!
 
Для такой исходной формулы как у Вас подойдет следующий код. Правда непонятно, зачем там плюсы сразу после равно
Код
Sub SplitFormula()
Dim cl As Range
Dim lRow&, I&, J&, N&
Dim iFormula
lRow = Cells(Rows.Count, 2).End(xlUp).Row
For Each cl In Range("B4:B" & lRow)
    If cl.HasFormula Then
        iFormula = Split(cl.Formula, "+")
        For J = 0 To UBound(iFormula)
            If iFormula(J) Like "*!*" Then
                cl.Offset(, 2 + N).Formula = "=" & Replace(iFormula(J), "=", "")
                N = N + 1
            End If
        Next
    End If
Next
End Sub
Изменено: Sanja - 19.02.2018 10:42:29
Согласие есть продукт при полном непротивлении сторон
 
Огромное Спасибо Sanja! Только как указать ячейку куда буду выгружаться данные? В макросе сразу прописать можно?
 
11-ю строку кода замените на такую
Код
Range("D4").Offset(, N).Formula = "=" & Replace(iFormula(J), "=", "")
Ссылки будут вставляться начиная с ячейки 'D4' вправо
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Ссылки будут вставляться начиная с ячейки 'D4' вправо
Все супер братан, только как можно сделать так чтобы начинаю с д4 только формулу каждой строки выгружать именно на ту строку( например ниже если д5 то на д5)????
 
Цитата
Алмас написал: как указать ячейку куда буду выгружаться данные?....формулу каждой строки выгружать именно на ту строку
Слышь, братан, ты уж определись чё те надо
Изменено: Sanja - 20.02.2018 09:44:58
Согласие есть продукт при полном непротивлении сторон
 
да, все правильно просто он у меня те формулы что строчкой ниже ни в соседней ячейке справа а на той же где начал выгружать выгружает, то есть на д4 все....
 
Оставьте первоначальный вариант кода (сообщение #3) , почитайте справку по .Offset() и настройте смещение по Вашей задаче
Согласие есть продукт при полном непротивлении сторон
 
Я все сделал, в офсет 26 столбец поставил.... теперь не могу понять как сделать реплэйс чтобы он обратно в нижней строке в тот же 26 столбец пошел выгружать а не крайний ниже последнего(((
 
Цитата
Алмас написал: Я все сделал
Код
Sub SplitFormula()
Dim cl As Range
Dim lRow&, I&, J&, N&
Dim iFormula
lRow = Cells(Rows.Count, 2).End(xlUp).Row
For Each cl In Range("B4:B" & lRow)
    If cl.HasFormula Then
        iFormula = Split(cl.Formula, "+")
        For J = 0 To UBound(iFormula)
            If iFormula(J) Like "*!*" Then
                cl.Offset(, 26 + N).Formula = "=" & Replace(iFormula(J), "=", "")
                N = N + 1
            End If
        Next
        N = 0
    End If
Next
End Sub
Изменено: Sanja - 20.02.2018 15:23:48
Согласие есть продукт при полном непротивлении сторон
 
Sanja ты гений! Спасибо!
Страницы: 1
Наверх