Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/База данных в Excel (как разбить текст на несколько строк) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
База данных в Excel (как разбить текст на несколько строк)
Akum Дата: Воскресенье, 28.04.2019, 06:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Привет Форумчане!
Подкинули мне задачку, привести табличку в Excele под нужную структуру. В VBA я слаб, а в строке задать цикл не получается.
Имеется табличка, в которой первые три столбца уникальные, а вот четвёртый может содержать от одного до неизвестного количества значений, разделённых точкой с запятой. Как программист, я понимаю, нужен цикл от 1 до (количества точек с запятой в тексте)+1, вырезать текст кроме первого вхождения ";", добавлять строку ниже, вставлять текст, и повторять пока цикл.
Но реализовать такое опыта не хватает.
Спасибо.
К сообщению приложен файл: 1043729.xlsx (8.2 Kb)
 
Ответить
СообщениеПривет Форумчане!
Подкинули мне задачку, привести табличку в Excele под нужную структуру. В VBA я слаб, а в строке задать цикл не получается.
Имеется табличка, в которой первые три столбца уникальные, а вот четвёртый может содержать от одного до неизвестного количества значений, разделённых точкой с запятой. Как программист, я понимаю, нужен цикл от 1 до (количества точек с запятой в тексте)+1, вырезать текст кроме первого вхождения ";", добавлять строку ниже, вставлять текст, и повторять пока цикл.
Но реализовать такое опыта не хватает.
Спасибо.

Автор - Akum
Дата добавления - 28.04.2019 в 06:30
Pelena Дата: Воскресенье, 28.04.2019, 10:25 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Как вариант можно так
[vba]
Код
Public Sub ToColumn()
    Dim x, s, i&, j&, irow&
    x = Range("A4", Cells(Rows.Count, 4).End(xlUp)).Value
    Application.ScreenUpdating = False
    irow = 4
    For i = 1 To UBound(x)
        s = Split(x(i, 4), ";")
        For j = 0 To UBound(s)
            Cells(irow, 1) = x(i, 1)
            Cells(irow, 2) = x(i, 2)
            Cells(irow, 3) = x(i, 3)
            Cells(irow, 4) = Trim$(s(j))
            irow = irow + 1
        Next j
    Next i
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 1043729.xlsm (16.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Как вариант можно так
[vba]
Код
Public Sub ToColumn()
    Dim x, s, i&, j&, irow&
    x = Range("A4", Cells(Rows.Count, 4).End(xlUp)).Value
    Application.ScreenUpdating = False
    irow = 4
    For i = 1 To UBound(x)
        s = Split(x(i, 4), ";")
        For j = 0 To UBound(s)
            Cells(irow, 1) = x(i, 1)
            Cells(irow, 2) = x(i, 2)
            Cells(irow, 3) = x(i, 3)
            Cells(irow, 4) = Trim$(s(j))
            irow = irow + 1
        Next j
    Next i
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Pelena
Дата добавления - 28.04.2019 в 10:25
Akum Дата: Воскресенье, 28.04.2019, 12:12 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, Спасибо за отличный скрипт! Всё работает.

Извиняюсь перед всеми, за дублирование темы (сначала написал не в тот раздел и не знал как его оттуда удалить)
 
Ответить
СообщениеPelena, Спасибо за отличный скрипт! Всё работает.

Извиняюсь перед всеми, за дублирование темы (сначала написал не в тот раздел и не знал как его оттуда удалить)

Автор - Akum
Дата добавления - 28.04.2019 в 12:12
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!