Страницы: 1
RSS
Перенос данных из столбцов в строки
 
Добрый день! Подскажите как перенести данные из столбцов E:G, H:J (1, 2 - данные для переноса, но их может быть и больше) есть данные по несколько строк в этих столбцах. Нужно перенести данные по трем столбцам (артикул, наименование, цена) под аналогичные строки по каждому сопоставленному артикулу. В примере есть и лист Исходник и лист как в итоге должно получится. Это маленькая часть всех данных, поэтому в ручную не вариант.
 
Макросом, простыми формулами "=E6", руками.
 
Если именно перенести, то формулами никак.
 
Цитата
Anchoret написал:
простыми формулами "=E6", руками.
Вы мне очевидное сказали.
Какими простыми формулами, ищу варианты не найду.
А руками - я говорила не вариант, несколько тысяч подобных строк.
И макросом догадываюсь что можно, ищу такой подобный макрос.
 
Цитата
Юрий М написал:
Если именно перенести,
в ручную имеете ввиду? можно, но таких строк тысячи. ну раз нет других вариантов...
 
Ничего про "вручную" я не говорил. Сказал то, что сказал: ПЕРЕНЕСТИ формулами ничего нельзя. Именно ПЕРЕНЕСТИ.
Остаётся макрос. Но, возможно, Вы просто путаетесь с терминологией относительно переноса )
 
проверяйте
Код
Sub mv()
Dim mass()
p = 3
For i = 5 To ActiveSheet.UsedRange.Rows.Count
    If Cells(i, p) <> "" Then
        If p = 3 Then j = i
        a = a + 1
        ReDim Preserve mass(1 To 3, 1 To a)
        mass(1, a) = Cells(i, p - 1).Value
        mass(2, a) = Cells(i, p).Value
        mass(3, a) = Cells(i, p + 1).Value
        If i > l Then l = i
    Else
        p = p + 3
        i = j - 1
        If p > 9 Then
            p = 3
            i = l + 1
            Do While Cells(i, p) = ""
                i = i + 1
                If i > ActiveSheet.UsedRange.Rows.Count Then Exit For
            Loop
            i = i - 1
        End If
    End If
Next
Worksheets.Add
Range("B5").Resize(a, 3) = Application.Transpose(mass)
End Sub

если нужно выгрузить прямо на существующий лист, сотрите Worksheets.Add

 
yozhik, все получилось супер! к сожалению не могу понять что да как, но вышло как надо! спасибо!
 
enot7,
Цитата
Юрий М написал:
возможно, Вы просто путаетесь с терминологией относительно переноса
перенос — в старом месте удалить, в новом создать
копирование — создание копии в новом месте, в старом всё остаётся, как есть

Так вот, функция (за редким исключением) не может менять значение никаких ячеек, кроме той, в которую введена. Также функция не может закрашивать, делать границы и прочее (также за редким исключением). Всё, что может функция на листе — возвращать (или не возвращать) какое-то значение  ;) отсюда и непонятки
Изменено: Jack Famous - 04.04.2018 14:27:24
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
yozhik, если возможно, то вы можете пояснить свой макрос (какие столбцы, периоды и т.п.) вы указали, чтобы мне этот макрос использовать в дальнейшем видоизменяя?  
 
yozhik, к сожалению макрос не совсем подходит, т.к. при наличии пустых строк (под артикулом), макрос все подряд данные притягивает, заполняя просто пустые ячейки
 
не совсем Вас понял) в прикрепленном файле сверка выгрузки макросом с результатом. Один в один) ну и комменты к коду
 
yozhik, посмотрите третью вкладку "результат с макросом" , там все строчки съехали, когда я убрала последние три столбца (как вариант, что может быть только один конкурент для сравнения цен, и если будут дополнительные пустые строки, куда все переносится (A:D).
 
Цитата
enot7 написал:
когда я убрала последние три столбца
8-0  :D
сейчас подправлю, чтоб и убирать и добавлять можно было)
 
yozhik, спасибо. я к сожалению только потом подумала над всеми возможными вариантами. самый наверно оптимальный это прикрепленный файл
 
не, не подправлю. Если в Вашем примере убрать последние три столбца, в каком виде Вы хотите результат? Количество строк станет меньше. Макрос и с удаленными столбцами собирает все что есть, и выгружает (без пустых значений). Если не на дополнительный лист, то поверх существующих значений в столбцах B,C,D. При удалении последних трех столбцов количество записанных данных меньше, поэтому при выгрузке на этот же лист, перезаписывается меньше строк в столбцах B,C,D и просто остаются "дополнительно" прежние данные. Их, видимо, можно просто удалить?
 
yozhik, пустые строки в принципе можно удалить перед тем как использовать этот макрос, но тогда для переносимых данных не будет хватать одной пустой строчки, т.к. данные переносятся на одну строчку ниже данных в столбцах A:D.
 
Скорее всего Вам так надо было. Данные со столбцов, где конкуренты надо очищать, или пусть остаются?
 
yozhik, к сожалению с данным переносом на другой лист совсем не подходит (для дальнейшей работы). должно получится как во вкладке "итого" (ну или без пустых строк).
 
Ну теперь я вообще перестал понимать что надо) Есть Исходник, есть Итого, так? Как в Итого должна получиться 7-я строка, если "Глушитель основной А" в исходнике отсутствует?
 
yozhik, теперь я тоже запуталась в файлах и вкладках... Исправила лист Исходник, чтобы соответствовал Итого.
 
Вам нужны в листе Итого данные из столбцов, которые переносим в В, С, D? Пустые строки убрать можно в B, C, D?  
 
yozhik, да данные в столбцы В, С, D. Если убрать пустые строки в В, С, D до переноса данных, то при переносе данных одной строчки не хватит. т.к. данные переносятся на строчку ниже.
как оказывается проще вариант есть (вроде)  :D :
Выделяем - копируем - Спецвставка - галку на пропускать пустые ячейки.
??
Страницы: 1
Наверх