Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
4 / 3 / 1
Регистрация: 03.04.2018
Сообщений: 113
1
Excel

Перенести массив из одного листа на другой

25.02.2021, 18:30. Показов 695. Ответов 5

Пытаюсь разобраться с массивами, дается очень сложно, поэтому решил придумать простенькое задание, может кто поможет сделать, а там уже глядишь и сам пойму что да как создается.
В общем, есть два листа: лист с различным текстом и лист, куда нужно перенести значения. Нужно скопировать с листа "FIO" столбцы D, K и O. Копируем начиная с 3-й строки и пока не дойдем до конца. Вставляем их в лист "Forma" в столбцы A, B и C начиная с 11-й строки. Но только после того, как была скопирована строка, нужно добавить пустую, чтоб не копировать поверх текста, который может быть внизу. Написал такой код, но это не массивом, и он почему-то копирует ОЧЕНЬ много значений, может что-то намудрил с добавлением пустой строки. Файл и скрины примера прикрепляю.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub MMM()
Application.ScreenUpdating = False
Dim TextA, TextB, TextC As String
Dim NumberEnd As Integer
Dim N As Integer
  LR = ThisWorkbook.Sheets("FIO").Cells(Rows.Count, 4).End(xlUp).Row
    For I = LR To 3 Step -1
      For Z = 11 To LR + 11
        TextA = ThisWorkbook.Sheets("FIO").Cells(I, 4)
        TextB = ThisWorkbook.Sheets("FIO").Cells(I, 11)
        TextC = ThisWorkbook.Sheets("FIO").Cells(I, 15)
        ThisWorkbook.Sheets("Forma").Cells(Z, 1) = TextA
        ThisWorkbook.Sheets("Forma").Cells(Z, 2) = TextB
        ThisWorkbook.Sheets("Forma").Cells(Z, 3) = TextC
        N = Z + 1
        ThisWorkbook.Sheets("Forma").Rows(N).Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      Next Z
    Next I
Application.ScreenUpdating = True
End Sub
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Перенести массив из одного листа на другой   Перенести массив из одного листа на другой   Перенести массив из одного листа на другой  

Вложения
Тип файла: zip Massiv.xlsm.zip (15.4 Кб, 6 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2021, 18:30
Ответы с готовыми решениями:

Перенести данные из одного листа на другой
Здравствуйте! Ребята, сломала себе уже голову, форум облазила весь, инет перерыла, помогите...

Перенести значение из одного листа в другой с условием
Приветствую! Возникла нужда в сортировке данных. Дело такое. Мне нужно чтобы значения ячеек...

Перенести информацию с одного листа Excel на другой
Возможно переносить информацию с одного листа Екселя на другой(каждый раз отступать) Переносить...

Перенести данные с одного листа на другой с условием
Задача передо мной стоит следующая. в книге два листа: на первом международный код услуги(1...

5
4 / 3 / 1
Регистрация: 03.04.2018
Сообщений: 113
25.02.2021, 19:03  [ТС] 2
После того, как скопировали последние элементы, необходимо записать значение их строки в любую переменную, чтоб потом можно было бы удалять диапазон с 11-й строки и до той, в которой находится последние скопированные элементы.

Добавлено через 26 минут
Немного ошибся с синтаксисом при добавлении пустой строки, но всё равно не получается так, как должно быть, не говоря уже о массивах.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub MMM()
Application.ScreenUpdating = False
Dim TextA, TextB, TextC As String
Dim NumberEnd As Integer
Dim N As Integer
  LR = ThisWorkbook.Sheets("FIO").Cells(Rows.Count, 4).End(xlUp).Row
    For I = LR To 3 Step -1
      For Z = 11 To LR + 11
        TextA = ThisWorkbook.Sheets("FIO").Cells(I, 4)
        TextB = ThisWorkbook.Sheets("FIO").Cells(I, 11)
        TextC = ThisWorkbook.Sheets("FIO").Cells(I, 15)
        ThisWorkbook.Sheets("Forma").Cells(Z, 1) = TextA
        ThisWorkbook.Sheets("Forma").Cells(Z, 2) = TextB
        ThisWorkbook.Sheets("Forma").Cells(Z, 3) = TextC
        N = Z + 1
        Range("C" + CStr(N)).Select
        Selection.EntireRow.Insert
      Next Z
    Next I
Application.ScreenUpdating = True
End Sub
0
40 / 29 / 11
Регистрация: 03.06.2019
Сообщений: 101
25.02.2021, 19:42 3
serviktor, навряд ли тут дело в массивах. Лучше объясните, что именно Вы хотите сделать, в чем суть Вашей задачи, тогда и способы решения найдутся.
0
3206 / 956 / 222
Регистрация: 29.05.2010
Сообщений: 2,074
25.02.2021, 19:59 4
Как вариант:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub pr()
    Application.ScreenUpdating = False
    Dim TextA, TextB, TextC As String
    Dim b()
    mA = Sheets("FIO").UsedRange.Value
    Sheets("Forma").Activate
    Rows("11:" & UBound(mA) + 9).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    For Each j In Array(2, 9, 13)
        i = i + 1
        b = Application.Index(mA, , j, 1)
        Cells(10, i).Resize(UBound(b)) = b
    Next
    Application.ScreenUpdating = True
End Sub
0
4 / 3 / 1
Регистрация: 03.04.2018
Сообщений: 113
25.02.2021, 20:35  [ТС] 5
Igor_61, да задачу без массивов я смог самостоятельно решить, она звучит очень просто: скопировать из одного листа столбцы D, K и O на другой, но при этом не задеть текст внизу. Но я решил задачу без массива, просто хотел на таком примере попытаться понять макросы с массивами, чтоб в будущем было проще.
0
40 / 29 / 11
Регистрация: 03.06.2019
Сообщений: 101
25.02.2021, 20:57 6
serviktor, так значит вопрос был о смещении диапазона на листе вниз, а не о массивах. Извините за неправильно понятую мной задачу и за отнятое у Вас время.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2021, 20:57

Уникальные значение в таблице Excel перенести с одного листа на другой
Здравствуйте!! Помогите, пожалуйста, срочно!!! очень-очень!!! есть огромная таблица, 5000...

Перенести данные с одного листа на другой
Доброго времени суток! Ребята, помогите пожалуйста. Суть вопроса вот чем: на первом листе по...

Перенести данные с одного листа на другой
Добрый вечер!Помогите написать формулу. Нужно данные с 1 листа * на 2 лист(ячейки совпадают )...

Как перенести данные, соответствующие артикулам одного листа на другой
Помогите, пожалуйста. Что-то самой справится не получается. Вопрос такой: во вложенном файле в...

Как перенести данные с одного листа на другой в одной книге
Ребята, подскажите , пожалуйста, как перенести данные с одного листа на другой в одной книге,...

Как перенести значения ячеек с интервалом с одного листа на другой?
нужно копировать значения ячеек,выделенных зеленым цветом в столбце В. 8, 57, 106, ... (с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.