Страницы: 1
RSS
Разбитие массива по столбцам. Прошу помощи!, Необходимо разбить таблицу по столбцам на новые листы
 
Здравствуйте, уважаемые форумчане. Прощу всех помощи, любая подсказка будет очень полезна.
Обыскала весь интернет, и форум тоже, но не смогла найти ничего подобного.
Необходимо разбить массив данных. К примеру, первый столбец "Метка времени" должен быть на "Лист 1", столбец B должен быть на "Лист 2" и т.д.
Вручную делать очень долго, уже устала. Прикрепляю сам массив, в нём и пример, как должны выглядеть листы.
;)  
Изменено: Анастасия Иванова - 27.11.2021 17:47:21
 
Странно... Время от времени от разных новых пользователей в примере присутствует лист с названием "Аркуш"... И задача в таких случаях непонятна и не из файла и не из темы...
 
Это просто украинское название, не обращайте внимания
 
Цитата
написал:
Прикрепляю сам массив и пример, как должен выглядеть файл
Хорошо выглядит, очень понятно :)  
 
_Igor_61,  :D  

Анастасия Иванова, вы бы просто показали один лист и назвали бы его "ИСХОДНЫЕ ДАННЫЕ" или "ВИХІДНІ ДАНІ" и после так же что должно получится...потому, что я понял ли шь что нужно из таблицы сделать отдельно листыс данными каждого столбцпа (но это догадки) не понял что за таблица
Изменено: Mershik - 27.11.2021 17:02:31
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Анастасия Иванова написал:
любая подсказка будет очень полезна.
подсказка 1 - не все знают украинский язык, мы открыли файлы и ничего не поняли и закрыли их - сделайте файлы на русском языке
подсказка 2 - нам не нужны ваши рабочие файлы, оставьте их для вашего руководства, нам нужен небольшой пример (1-2 листа, нам не нужно 50 непонятных листов)
подсказка 3 - вот я открыл файл "Массив", там есть столбец "Отметка времени" - открыл файл "Пример" - где на этих 40 листах этот столбец "отметка времени"? - не надо нас грузить лишней информацией. Мы не будем смотреть все 40 ваших листов на непонятном нам языке.
P.S. _Igor_61, +1 ))
Изменено: New - 27.11.2021 18:30:14
 
Цитата
написал:
что я понял ли шь что нужно из таблицы сделать отдельно листыс данными каждого столбцпа (но это догадки)
Вы всё правильно поняли, ну, точнее, догадались.
Изменено: Анастасия Иванова - 27.11.2021 17:47:02
 
Цитата
написал:
не надо нас грузить лишней информацией. Мы не будем смотреть все 40 ваших листов на непонятном нам языке.
Цитата
написал:
Странно... Время от времени от разных новых пользователей в примере присутствует лист с названием "Аркуш"...
Прикрепляю файл. Извините, что сразу не сделала, как правильно(
Лист "Данные"  - изначальный массив.
Лист 1, 2, 3, 4 - пример того, как нужно разбить таблицу
Изменено: Анастасия Иванова - 27.11.2021 17:46:44
 
Анастасия Иванова, ознакомьтесь с правилами форума.
1. Вернитесь, приведите сообщения в порядок. Бездумное копирование не приветствуется.
2. Сейчас название темы общее. Уточните, предложите другое, отражающее Вашу задачу. Заменят модераторы
 
Цитата
написал:
предложите другое, отражающее Вашу задачу
Разбить массив данных по столбцам на новые листы исходя из примера
 
Анастасия Иванова, см. файл. Откройте лист "Данные", на нём обязательно должна быть умная таблица (как у вас), нажмите Alt+F8 - Выполнить. Макрос создаст листы с названиями 1, 2, 3, 4, 5 и т.д. по количеству столбцов в вашей умной таблице. Если в файле уже есть листы с названиями 1, 2, 3, 4, 5 - они будут удалены!
Изменено: New - 27.11.2021 19:36:42
 
название  темы:
скопировать колонки листа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
Изменено: Ігор Гончаренко - 27.11.2021 18:25:00
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
New, Иван, спасибо вам огромное! Вы очень меня выручили! Невероятно благодарна, вручную я бы это делала целый день.
Желаю хорошего вечера  :D  
Изменено: Анастасия Иванова - 27.11.2021 18:31:15
 
Да, вручную создавать 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
Изменено: New - 27.11.2021 19:37:23
 
Код
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
Изменено: Евгений Смирнов - 28.11.2021 07:33:47
 
Цитата
Анастасия Иванова написал: Разбить массив данных по столбцам на новые листы исходя из примера
Когда читают название темы, то примера еще не видят. Есть же какое-то условие для разбиения данных?
Страницы: 1
Наверх