Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Перенос ячеек с дублированием
 
Привет всем.
Всю голову сломал как назвать тему, так как не знаю названия функции которую хочу увидеть.
Простым языком:
Есть вот такой файл "1111"
Из него нужно сделать файл "2222"
Долгим путем я уже делать его научился.
Как это сделать быстро? формулой или прием какой может есть?
Заранее спасибо

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: Marat Bayburin - 16 Фев 2017 14:54:26
 
Попробуйте ещё раз ИЗМЕНИТЬ своё сообщение.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Нужно не картинки показывать, а небольшой пример в Excel-файле
 
исправил. извините. первый раз в этом форуме.  
 
Вложил файл эксель для примера. Первая вкладка как я этот файл получаю, вторая вкладка - как мне этот файл нужно отправить. как бы быстро его превратить из первого во второй)  
 
Файл использую в работе. для простоты написал колбасу и т.д.)  просто чтоб логику видно было
 
так никто и не поможет?
 
Доброе время суток.
Цитата
Marat Bayburin написал:
так никто и не поможет?
Спешка?
Вариант на Power Query.
Успехов.
 
нет. не спешка, просто тишина вдруг)
а как вы это сделали? в двух словах? или статью какую нибудь может прочесть?
 
VBA:
Код
Sub baurin()
Dim arr(), i&, x&
Application.ScreenUpdating = False
Range([B1], [B1].SpecialCells(xlLastCell)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
arr = [A1].CurrentRegion.Value
ReDim c(1 To UBound(arr) * 2, 1 To 2)
For i = 1 To UBound(arr)
If Not IsEmpty(arr(i, 2)) Then
    x = x + 1
    c(x, 1) = arr(i, 1)
    c(x, 2) = arr(i, 2)
End If
Next
For i = UBound(arr) + 1 To UBound(arr) * 2
    If Not IsEmpty(arr(i - UBound(arr), 3)) Then
        x = x + 1
        c(x, 1) = arr(i - UBound(arr), 1)
        c(x, 2) = arr(i - UBound(arr), 3)
    End If
Next
[A1].CurrentRegion.Clear
[A1].Resize(x, 2).Value = c
With Range("A1:B" & x)
    .RowHeight = 15
    .BorderAround xlContinuous
    .Borders(xlInsideVertical).LineStyle = xlContinuous
    .Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
Application.ScreenUpdating = True
End Sub
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, ого!!! круто. говорил мне папа "иди на програмиста учись")
а если усложню задачу? может вообще можно делать всю задачу с помощью макроса?
усложнил первый лист, прикладываю.
если сильно обнаглел - извините)  
 
Код
Dim arr(), i&, j&, x&
Application.ScreenUpdating = False
arr = [A1].CurrentRegion.Value
ReDim c(1 To UBound(arr) * 2, 1 To 2)
For i = 2 To UBound(arr)
    For j = 2 To UBound(arr, 2)
        If arr(i, j) = 1 Then
            x = x + 1
            c(x, 1) = arr(i, 1)
            c(x, 2) = arr(1, j): Exit For
        End If
    Next j
Next
For i = UBound(arr) + 1 To UBound(arr) * 2
    For j = UBound(arr, 2) To 2 Step -1
        If arr(i - UBound(arr), j) = 1 Then
            x = x + 1
            c(x, 1) = arr(i - UBound(arr), 1)
            c(x, 2) = arr(1, j): Exit For
        End If
    Next j
Next
Sheets(2).[A1].CurrentRegion.Clear
Sheets(2).[A1].Resize(x, 2).Value = c()
With Sheets(2).Range("A1:B" & x)
    .RowHeight = 18
    .BorderAround xlContinuous
    .Borders(xlInsideVertical).LineStyle = xlContinuous
    .Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
Application.ScreenUpdating = True
End Sub
У Вас в рабочем файле точно единицы?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
Владимир написал:
У Вас в рабочем файле точно единицы?
Следующим шагом, скорее всего, будет подсчитать количество или сумму чисел в не пустых ячейках :)
 
Цитата
Владимир написал:
У Вас в рабочем файле точно единицы?

не работает что-то( или у меня руки кривые(
да точно еденички
 
Цитата
Marat Bayburin написал:
не работает что-то
Очень информативно... Что можно понять из Вашего сообщения? Макрос останавливается, Excel выгружается, компьютер орёт благим матом?
 
Возможно запускаете макрос со второго листа.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
вот теперь работает. Владимир, Вы очень крут!!!) Спасибо вам огромное!!!
 
Владимир,Выходит он берет только две еденички в строке, не более.
К примеру в третей строке есть 4 еденички, а во втором листе показывает только 2 позиции. а должен 4.
 
Offtop
Цитата
Андрей VG написал:
подсчитать количество или сумму чисел в не пустых ячейках
Цитата
Marat Bayburin написал:
К примеру в третей строке есть 4 еденички, а во втором листе показывает только 2 позиции. а должен 4.
Я как в воду глядел  :D
Изменено: Андрей VG - 17 Фев 2017 10:49:45
 
Андрей VG,да уж( плохо когда знаешь мало слов
Страницы: 1
Читают тему (гостей: 1)
Наверх