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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование N раз всех данных в ячейке друг за другом - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Копирование N раз всех данных в ячейке друг за другом
Kudesnik1987 Дата: Суббота, 24.12.2016, 00:02 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день, уважаемые форумчане!
Пытаюсь сделать один чудо автоматизированный файл для своей работы, и столкнулся с рядом сложностей, которые не могут решить, а изучать книгу по программированию в VB и Excel очень не хочется.
В проекте много задач, но сейчас встрял на следующей:
Есть столбец, в нем случайное кол-во данных (без пустых значений). Мне нужно в другой столбик вставить N раз скопированные данные , причем N вводится пользователем ( по умолчанию 4 ) и далее, отсортировать данные А-Я (данные будут текстовые) .
Я пытался записать макросом через CTR+Shift+End однако, когда я выставлял курсор на последнюю ячейку ( в момент вставки ) и нажимал вниз ( чтобы начать вставку с чистой ячейки ) то макрос записывал не (Последнее значение+1) а конкретное, где оказывался мой курсор ( типа А5 ) .

Готов отблагодарить небольшой денежкой на телефон.
Заранее спасибо!
 
Ответить
СообщениеДобрый день, уважаемые форумчане!
Пытаюсь сделать один чудо автоматизированный файл для своей работы, и столкнулся с рядом сложностей, которые не могут решить, а изучать книгу по программированию в VB и Excel очень не хочется.
В проекте много задач, но сейчас встрял на следующей:
Есть столбец, в нем случайное кол-во данных (без пустых значений). Мне нужно в другой столбик вставить N раз скопированные данные , причем N вводится пользователем ( по умолчанию 4 ) и далее, отсортировать данные А-Я (данные будут текстовые) .
Я пытался записать макросом через CTR+Shift+End однако, когда я выставлял курсор на последнюю ячейку ( в момент вставки ) и нажимал вниз ( чтобы начать вставку с чистой ячейки ) то макрос записывал не (Последнее значение+1) а конкретное, где оказывался мой курсор ( типа А5 ) .

Готов отблагодарить небольшой денежкой на телефон.
Заранее спасибо!

Автор - Kudesnik1987
Дата добавления - 24.12.2016 в 00:02
dim34rus Дата: Суббота, 24.12.2016, 00:34 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Пжлста
[vba]
Код
Sub Копирование()
    Kol = InputBox("Количество дублей:", "Ввод количества", 4)
    
    col = 3 'Стартовая колонка
    
    'По вертикали
    i = 2 'Стартовая ячейка
    While ActiveSheet.Cells(i, col).Value <> ""
      i = i + 1
    Wend
    Size = i - 2
    
    colset = 7 'номер колонки куда вставляем
    ActiveSheet.Range(Cells(2, col), Cells(1 + Size, col)).Copy
    For k = 0 To Kol - 1
      ActiveSheet.Cells(2 + Size * k, colset).Activate
      ActiveSheet.Paste
    Next
    Application.CutCopyMode = False
    
    st1 = Left(ActiveSheet.Cells(1, colset).Address, Len(ActiveSheet.Cells(1, colset).Address) - 1)
    
    'Сортируем
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range(st1 & "2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(st1 & "2:" & st1 & Format(2 + Size * (Kol)))
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    ActiveSheet.Cells(1, colset).Activate
End Sub
[/vba]
К сообщению приложен файл: 7539385.xlsm (19.4 Kb)


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеПжлста
[vba]
Код
Sub Копирование()
    Kol = InputBox("Количество дублей:", "Ввод количества", 4)
    
    col = 3 'Стартовая колонка
    
    'По вертикали
    i = 2 'Стартовая ячейка
    While ActiveSheet.Cells(i, col).Value <> ""
      i = i + 1
    Wend
    Size = i - 2
    
    colset = 7 'номер колонки куда вставляем
    ActiveSheet.Range(Cells(2, col), Cells(1 + Size, col)).Copy
    For k = 0 To Kol - 1
      ActiveSheet.Cells(2 + Size * k, colset).Activate
      ActiveSheet.Paste
    Next
    Application.CutCopyMode = False
    
    st1 = Left(ActiveSheet.Cells(1, colset).Address, Len(ActiveSheet.Cells(1, colset).Address) - 1)
    
    'Сортируем
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range(st1 & "2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(st1 & "2:" & st1 & Format(2 + Size * (Kol)))
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    ActiveSheet.Cells(1, colset).Activate
End Sub
[/vba]

Автор - dim34rus
Дата добавления - 24.12.2016 в 00:34
krosav4ig Дата: Суббота, 24.12.2016, 00:47 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
До кучи
Данные в столбце A:A, N в ячейке B1
[vba]
Код
Sub ss()
    Dim rng As Range
    With Range([A1], [A1].End(xlDown))
        Set rng = .Resize(.Count * [B1])
        .Copy rng
        With ActiveSheet.Sort
            With .SortFields
                .Clear
                .Add rng, 0, 1, , 0
            End With
            .SetRange rng: .Header = 2
            .MatchCase = 0: .Orientation = 1
            .SortMethod = 1: .Apply
        End With
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 24.12.2016, 03:39
 
Ответить
СообщениеДо кучи
Данные в столбце A:A, N в ячейке B1
[vba]
Код
Sub ss()
    Dim rng As Range
    With Range([A1], [A1].End(xlDown))
        Set rng = .Resize(.Count * [B1])
        .Copy rng
        With ActiveSheet.Sort
            With .SortFields
                .Clear
                .Add rng, 0, 1, , 0
            End With
            .SetRange rng: .Header = 2
            .MatchCase = 0: .Orientation = 1
            .SortMethod = 1: .Apply
        End With
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 24.12.2016 в 00:47
Kudesnik1987 Дата: Суббота, 24.12.2016, 01:14 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Коллеги, большое спасибо за помощь! Использовал вариант товарища krosav4ig'а.
Скиньте, пожалуйста, ЯД номер или телефона в личку - переведу обещанную копеечку.
 
Ответить
СообщениеКоллеги, большое спасибо за помощь! Использовал вариант товарища krosav4ig'а.
Скиньте, пожалуйста, ЯД номер или телефона в личку - переведу обещанную копеечку.

Автор - Kudesnik1987
Дата добавления - 24.12.2016 в 01:14
  • Страница 1 из 1
  • 1
Поиск:

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