Здравствуйте, уважаемые форумчане. Прощу всех помощи, любая подсказка будет очень полезна. Обыскала весь интернет, и форум тоже, но не смогла найти ничего подобного. Необходимо разбить массив данных. К примеру, первый столбец "Метка времени" должен быть на "Лист 1", столбец B должен быть на "Лист 2" и т.д. Вручную делать очень долго, уже устала. Прикрепляю сам массив, в нём и пример, как должны выглядеть листы.
Странно... Время от времени от разных новых пользователей в примере присутствует лист с названием "Аркуш"... И задача в таких случаях непонятна и не из файла и не из темы...
Анастасия Иванова, вы бы просто показали один лист и назвали бы его "ИСХОДНЫЕ ДАННЫЕ" или "ВИХІДНІ ДАНІ" и после так же что должно получится...потому, что я понял ли шь что нужно из таблицы сделать отдельно листыс данными каждого столбцпа (но это догадки) не понял что за таблица
подсказка 1 - не все знают украинский язык, мы открыли файлы и ничего не поняли и закрыли их - сделайте файлы на русском языке подсказка 2 - нам не нужны ваши рабочие файлы, оставьте их для вашего руководства, нам нужен небольшой пример (1-2 листа, нам не нужно 50 непонятных листов) подсказка 3 - вот я открыл файл "Массив", там есть столбец "Отметка времени" - открыл файл "Пример" - где на этих 40 листах этот столбец "отметка времени"? - не надо нас грузить лишней информацией. Мы не будем смотреть все 40 ваших листов на непонятном нам языке. P.S. _Igor_61, +1 ))
написал: не надо нас грузить лишней информацией. Мы не будем смотреть все 40 ваших листов на непонятном нам языке.
Цитата
написал: Странно... Время от времени от разных новых пользователей в примере присутствует лист с названием "Аркуш"...
Прикрепляю файл. Извините, что сразу не сделала, как правильно( Лист "Данные" - изначальный массив. Лист 1, 2, 3, 4 - пример того, как нужно разбить таблицу
Анастасия Иванова, ознакомьтесь с правилами форума. 1. Вернитесь, приведите сообщения в порядок. Бездумное копирование не приветствуется. 2. Сейчас название темы общее. Уточните, предложите другое, отражающее Вашу задачу. Заменят модераторы
Анастасия Иванова, см. файл. Откройте лист "Данные", на нём обязательно должна быть умная таблица (как у вас), нажмите Alt+F8 - Выполнить. Макрос создаст листы с названиями 1, 2, 3, 4, 5 и т.д. по количеству столбцов в вашей умной таблице. Если в файле уже есть листы с названиями 1, 2, 3, 4, 5 - они будут удалены!
название темы: скопировать колонки листа1 на новые листы
добавьте в проект стандартный модуль, скопируйте в него и выполните этот макрос
Код
Sub SplitTableByColumns()
Dim c As Range
For Each c In Worksheets(1).[a1].CurrentRegion.Columns
With Worksheets.Add(after:=Worksheets(Worksheets.Count))
c.Copy .[a1]
End With
Next
End Sub
Да, вручную создавать 110 листов и копировать информацию на них - замучаешься... не, ну, где справедливость, я 40 строк кода, Игорь пять... Пойду с горя пить чай...
Код
Sub CreateNewSheetsByColumns()
Dim LO As ListObject, ActSheet As Worksheet, NewSheet As Worksheet, Rng As Range, i As Long
Set ActSheet = ActiveSheet
With ActSheet
If .ListObjects.Count = 0 Then
MsgBox "There is no List Object on the active sheet. Press Ctrl+T and make smart table", vbExclamation, "Attention"
Exit Sub
End If
Set LO = .ListObjects(1)
End With
If MsgBox("Should we create " & LO.ListColumns.Count & " worksheets?", vbQuestion + vbYesNo, "Question") = vbNo Then Exit Sub
Application.ScreenUpdating = False
For i = 1 To LO.ListColumns.Count
If SheetExists(i) Then
Application.DisplayAlerts = False
Worksheets(CStr(i)).Delete
Application.DisplayAlerts = True
End If
Set NewSheet = Worksheets.Add(after:=Sheets(Sheets.Count))
NewSheet.Name = i
Set Rng = LO.Range.Columns(i)
Rng.Copy NewSheet.Cells(1, 1)
NewSheet.Columns(1).AutoFit
Next i
ActSheet.Activate
Application.ScreenUpdating = True
MsgBox LO.ListColumns.Count & " worksheets were created!", vbInformation, "Finish"
End Sub
Function SheetExists(ByVal iName As String) As Boolean
On Error Resume Next
With Worksheets(CStr(iName)): End With
SheetExists = (Err = 0)
Err.Clear
End Function
Sub Иванова(): Dim Rg1 As Range
Application.ScreenUpdating = False
For Each Rg1 In Worksheets(1).Cells(1).CurrentRegion.Columns
Worksheets.Add after:=ActiveSheet: Rg1.Copy Cells(1)
Next: Worksheets(1).Activate
End Sub