Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2020, 10:16   #1
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию Как разбить ячейку с кучей данных на несколько строк

Приветствую! Помогите разобраться нубу.
Как разбить ячейку с кучей данных на несколько строк. Именно строк, а не столбцов.

Есть ячейка с артикулами, где нужно каждый артикул вывести в новую строку. Остальные столбики при этом просто дублируются. Разбивать нужно столбик А.

Пример файла (в исходнике больше 100к строк): https://dropmefiles.com/zeKtl

Заранее благодарю.
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 10:34   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Выложите 10-20 строк из тех 100к с примером что должно быть результатом
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.09.2020, 11:02   #3
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Выложите 10-20 строк из тех 100к с примером что должно быть результатом
Я же выложил пример файла в первом посте.
Там 2 строки оригинала и как должно быть.
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 11:06   #4
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию

Пример файла
Вложения
Тип файла: xlsx Пример файла для разбивки.xlsx (10.9 Кб, 2 просмотров)
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 11:20   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Разбиваете ячейку с помощью
Код:
 Split([A2], Chr(10))
на строки. А дальше копи/паст )
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.09.2020, 11:22   #6
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Разбиваете ячейку с помощью
Код:
 Split([A2], Chr(10))
на строки. А дальше копи/паст )
Я извиняюсь за наглость, я совсем нуб)
Можно весь код макроса?
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 11:32   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Option Explicit


Sub SplitXML()
    Dim wks1 As Worksheet
    Dim wks2 As Worksheet
    Dim intLastRowWks1 As Integer
    Dim intLastRowWks2 As Integer
    Dim i As Integer, j As Integer
    Dim strAValue As String
    Dim arAValues() As String
    
    Set wks1 = Sheets("Лист1")
    Set wks2 = Sheets("Лист2")
    intLastRowWks1 = wks1.Cells(wks1.Rows.Count, "A").End(xlUp).Row
    intLastRowWks2 = 2
    For i = 2 To intLastRowWks1
        strAValue = Trim$(wks1.Cells(i, "A").Value2)
        arAValues = Split(strAValue, Chr(10))
        For j = LBound(arAValues) To UBound(arAValues)
            If arAValues(j) <> "" Then
                wks2.Cells(intLastRowWks2, "A") = arAValues(j)
                wks2.Range("B" & intLastRowWks2 & ":I" & intLastRowWks2).Value = wks1.Range("B" & i & ":I" & i).Value
                intLastRowWks2 = wks2.Cells(wks2.Rows.Count, "A").End(xlUp).Row + 1
            End If
        Next j
    Next i
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.09.2020, 11:51   #8
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Option Explicit


Sub SplitXML()
    Dim wks1 As Worksheet
    Dim wks2 As Worksheet
    Dim intLastRowWks1 As Integer
    Dim intLastRowWks2 As Integer
    Dim i As Integer, j As Integer
    Dim strAValue As String
    Dim arAValues() As String
    
    Set wks1 = Sheets("Лист1")
    Set wks2 = Sheets("Лист2")
    intLastRowWks1 = wks1.Cells(wks1.Rows.Count, "A").End(xlUp).Row
    intLastRowWks2 = 2
    For i = 2 To intLastRowWks1
        strAValue = Trim$(wks1.Cells(i, "A").Value2)
        arAValues = Split(strAValue, Chr(10))
        For j = LBound(arAValues) To UBound(arAValues)
            If arAValues(j) <> "" Then
                wks2.Cells(intLastRowWks2, "A") = arAValues(j)
                wks2.Range("B" & intLastRowWks2 & ":I" & intLastRowWks2).Value = wks1.Range("B" & i & ":I" & i).Value
                intLastRowWks2 = wks2.Cells(wks2.Rows.Count, "A").End(xlUp).Row + 1
            End If
        Next j
    Next i
End Sub
Извините, но в основном файле он не работает(( В тестовом (тот что я сюда скидывал) все работает отлично.

Выдает такую ошибку: (прикрепленный файл)
Изображения
Тип файла: jpg Screenshot_1.jpg (18.7 Кб, 12 просмотров)
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 11:53   #9
zoogbet
Новичок
Джуниор
 
Регистрация: 25.09.2020
Сообщений: 7
По умолчанию

Так как файл оригинал слишком большой, закинул его на файлообменник.
https://dropmefiles.com/Clivn

Еще раз спасибо за помощь.
zoogbet вне форума Ответить с цитированием
Старый 25.09.2020, 12:21   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

1) Integer на Long заменить.
или
2) "скармливать" макросу не больше 5-7к строк за раз
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить таблицу, с большим объемом строк, по листам в Excel mngoncharov Microsoft Office Excel 3 18.09.2020 01:33
Объединить несколько сгруппированных строк столбца отчета в одну ячейку чувачек Microsoft Office Access 4 19.07.2013 12:23
Извлечение нескольких строк из базы данных в отдельную ячейку. Проблема. MF-er Microsoft Office Excel 12 20.07.2011 08:32
Нужно разбить фаил на несколько строк (Delphi) kakawkin Помощь студентам 2 18.04.2011 13:28
Как разбить SQL запрос на несколько строк? UNToxa БД в Delphi 4 17.02.2011 19:34