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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование строк n-раз и деление значения в ячейке в VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование строк n-раз и деление значения в ячейке в VBA (Макросы/Sub)
Копирование строк n-раз и деление значения в ячейке в VBA
Гость Дата: Четверг, 22.05.2014, 16:43 | Сообщение № 1
Группа: Гости
Здравствуйте, прошу помочь. Есть таблица состоящая из 4 столбцов и более 1000 строк. Каждая ячейка 4 столбца содержит разное кол-во числовых значений разделенных запятой. Нужно после каждой строки вставить ее копию столько раз, сколько значений в ячейке 4, при этом в исходной строке в ячейке 4 оставить первое значение, во второй только второе, в третьей - третье и т.д. Если в строке забито одно значение, то соответственно ни чего копировать не надо и переходим на след строчку. И так надо преобразовать весь массив.
Пример:
1.2.3 ......4...... (4 столбца)
А Б П 12,48,135
С Р Б 1236,4568

Конечный результат
1 2 3 4

А Б П 12
А Б П 48
А Б П 135
С Р Б 1236
С Р Б 4568
[moder]Читаем правила форума. Прикладываем свой пример в Excel
 
Ответить
СообщениеЗдравствуйте, прошу помочь. Есть таблица состоящая из 4 столбцов и более 1000 строк. Каждая ячейка 4 столбца содержит разное кол-во числовых значений разделенных запятой. Нужно после каждой строки вставить ее копию столько раз, сколько значений в ячейке 4, при этом в исходной строке в ячейке 4 оставить первое значение, во второй только второе, в третьей - третье и т.д. Если в строке забито одно значение, то соответственно ни чего копировать не надо и переходим на след строчку. И так надо преобразовать весь массив.
Пример:
1.2.3 ......4...... (4 столбца)
А Б П 12,48,135
С Р Б 1236,4568

Конечный результат
1 2 3 4

А Б П 12
А Б П 48
А Б П 135
С Р Б 1236
С Р Б 4568
[moder]Читаем правила форума. Прикладываем свой пример в Excel

Автор - Гость
Дата добавления - 22.05.2014 в 16:43
Svetik Дата: Четверг, 22.05.2014, 17:29 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Креплю пример таблицы. А так же попытка реализовать данную задачу макросом.
К сообщению приложен файл: 2023482.xls (24.0 Kb)
 
Ответить
СообщениеКреплю пример таблицы. А так же попытка реализовать данную задачу макросом.

Автор - Svetik
Дата добавления - 22.05.2014 в 17:29
Alex_ST Дата: Пятница, 23.05.2014, 08:32 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
А зачем тут макрос? "Текст по столбцам" Вам разве не подходит?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА зачем тут макрос? "Текст по столбцам" Вам разве не подходит?

Автор - Alex_ST
Дата добавления - 23.05.2014 в 08:32
Svetik Дата: Пятница, 23.05.2014, 10:20 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
К сожалению не подходит, задача состоит в том что бы скопировать строку столько раз в низ сколько значений в 4 ячейке, при этом оставить только одно значение. Конечно можно разбить 4 столбец на отдельные, но потом вручную опять таки копировать строки и убирать лишние значения. Когда таблица состоит из 100 строк, то это можно сделать, а когда 500-1000 то уже проблематично.
 
Ответить
СообщениеК сожалению не подходит, задача состоит в том что бы скопировать строку столько раз в низ сколько значений в 4 ячейке, при этом оставить только одно значение. Конечно можно разбить 4 столбец на отдельные, но потом вручную опять таки копировать строки и убирать лишние значения. Когда таблица состоит из 100 строк, то это можно сделать, а когда 500-1000 то уже проблематично.

Автор - Svetik
Дата добавления - 23.05.2014 в 10:20
Svetik Дата: Пятница, 23.05.2014, 10:24 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Может существует что-то подобное - "Текст по строкам"? это подошло бы больше.
 
Ответить
СообщениеМожет существует что-то подобное - "Текст по строкам"? это подошло бы больше.

Автор - Svetik
Дата добавления - 23.05.2014 в 10:24
RAN Дата: Пятница, 23.05.2014, 12:28 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub Мяу()
     Dim arr, i&, k&, j&
     arr = Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row).Value
     For i = UBound(arr) To 1 Step -1
         If InStr(arr(i, 1), ",") Then
             For j = 1 To Len(arr(i, 1))
                 If Mid$(arr(i, 1), j, 1) = "," Then
                     k = k + 1
                 End If
             Next
             Rows(i).Copy
             Rows(i & ":" & i + k - 1).Insert Shift:=xlDown
             k = 0
         End If
     Next
     arr = Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row).Value
     On Error Resume Next
     For i = 1 To UBound(arr)
         If InStr(arr(i, 1), ",") Then
             arr(i + 1, 1) = Mid$(arr(i, 1), InStr(arr(i, 1), ",") + 1)
             arr(i, 1) = Left$(arr(i, 1), InStr(arr(i, 1), ",") - 1)
         End If
     Next
     Range("D1").Resize(UBound(arr)) = arr
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub Мяу()
     Dim arr, i&, k&, j&
     arr = Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row).Value
     For i = UBound(arr) To 1 Step -1
         If InStr(arr(i, 1), ",") Then
             For j = 1 To Len(arr(i, 1))
                 If Mid$(arr(i, 1), j, 1) = "," Then
                     k = k + 1
                 End If
             Next
             Rows(i).Copy
             Rows(i & ":" & i + k - 1).Insert Shift:=xlDown
             k = 0
         End If
     Next
     arr = Range("D1:D" & Cells(Rows.Count, "D").End(xlUp).Row).Value
     On Error Resume Next
     For i = 1 To UBound(arr)
         If InStr(arr(i, 1), ",") Then
             arr(i + 1, 1) = Mid$(arr(i, 1), InStr(arr(i, 1), ",") + 1)
             arr(i, 1) = Left$(arr(i, 1), InStr(arr(i, 1), ",") - 1)
         End If
     Next
     Range("D1").Resize(UBound(arr)) = arr
End Sub
[/vba]

Автор - RAN
Дата добавления - 23.05.2014 в 12:28
Svetik Дата: Пятница, 23.05.2014, 14:28 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
RAN, Вы ВОЛШЕБНИК, Восхищаюсь Вами, все работает, огромное спасибо!!! hands
 
Ответить
СообщениеRAN, Вы ВОЛШЕБНИК, Восхищаюсь Вами, все работает, огромное спасибо!!! hands

Автор - Svetik
Дата добавления - 23.05.2014 в 14:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование строк n-раз и деление значения в ячейке в VBA (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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