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

Вход

Регистрация

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

 

= Мир MS Excel/Разложение одной таблицы на несколько (по горизонтали) - Страница 2 - Мир MS Excel

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_, DrMini  
Разложение одной таблицы на несколько (по горизонтали)
Dalm Дата: Суббота, 04.07.2026, 22:33 | Сообщение № 21
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 206
Репутация: 4 ±
Замечаний: 0% ±

Excel 2019
.


Сообщение отредактировал Dalm - Суббота, 04.07.2026, 22:35
 
Ответить
Сообщение.

Автор - Dalm
Дата добавления - 04.07.2026 в 22:33
Dalm Дата: Суббота, 04.07.2026, 22:34 | Сообщение № 22
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 206
Репутация: 4 ±
Замечаний: 0% ±

Excel 2019
Что же делать ?
Помогите
 
Ответить
СообщениеЧто же делать ?
Помогите

Автор - Dalm
Дата добавления - 04.07.2026 в 22:34
MikeVol Дата: Воскресенье, 05.07.2026, 10:24 | Сообщение № 23
Группа: Проверенные
Ранг: Обитатель
Сообщений: 489
Репутация: 120 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Dalm,
То есть таблица "Группа-2" не идет по порядку, а просто куда-то исчезает.

Всё правильно код отработал, ведь вы
Я удалил одну из желтых ячеек с надписью "Группа".

Вы вообще пробывали читать код, понять его логику? Что просили - то и получили как результат. Я что-то сам запутался в ваших хотелках.


Ученик.
Одесса - Украина
 
Ответить
СообщениеDalm,
То есть таблица "Группа-2" не идет по порядку, а просто куда-то исчезает.

Всё правильно код отработал, ведь вы
Я удалил одну из желтых ячеек с надписью "Группа".

Вы вообще пробывали читать код, понять его логику? Что просили - то и получили как результат. Я что-то сам запутался в ваших хотелках.

Автор - MikeVol
Дата добавления - 05.07.2026 в 10:24
MikeVol Дата: Воскресенье, 05.07.2026, 10:46 | Сообщение № 24
Группа: Проверенные
Ранг: Обитатель
Сообщений: 489
Репутация: 120 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
Не знаю, может и угадаю вашу логику хотелки, возьму за основу код от Елены и чуть его изменю: [vba]
Код
Option Explicit
Const stdata        As String = "Y17"

Public Sub SplitTable_v2()
    On Error GoTo ErrorHandler
    Dim i As Long, ir As Long, cc As Long

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.CutCopyMode = False

    With ActiveSheet

        Dim st      As Range
        Set st = .Range(stdata)

        Dim nCol    As Long
        nCol = st.CurrentRegion.Columns.Count

        Dim Offs    As Long
        Offs = nCol + 2

        Dim rTitle  As Range
        Set rTitle = st.Resize(1, nCol)

        Dim arrData
        arrData = st.CurrentRegion.Value

        Dim c0      As Long
        c0 = st.Column

        Dim r0      As Long
        r0 = st.Row

        Dim lCol    As Long
        lCol = .Cells(r0 - 1, .Columns.Count).End(xlToLeft).Column

        For cc = st.Column + Offs To lCol Step Offs
            .Range(.Cells(r0, cc), _
                    .Cells(r0 + UBound(arrData), cc + nCol - 1)).Clear
        Next cc

        c0 = st.Column

        For i = 2 To UBound(arrData)

            If arrData(i, 2) Like "Группа *" Then

                Do
                    c0 = c0 + Offs

                    If c0 > lCol Then Exit For
                Loop Until .Cells(r0 - 1, c0).Value = "Группа"

                If c0 > lCol Then Exit For
                ir = i

            ElseIf i < UBound(arrData) Then

                Do While i < UBound(arrData) And _
                        Not arrData(i, 2) Like "Группа *"
                    i = i + 1
                Loop

                rTitle.Copy .Cells(r0, c0)

                .Cells(r0 + ir - 1, st.Column).Resize(i - ir, nCol).Copy
                .Cells(r0 + 1, c0).PasteSpecial xlPasteValuesAndNumberFormats

                .Cells(r0 + ir - 1, st.Column).Resize(i - ir, nCol).Copy
                .Cells(r0 + 1, c0).PasteSpecial xlPasteFormats

                i = i - 1
            End If

        Next i

    End With

ExitHandler:
    Application.CutCopyMode = False
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Exit Sub

ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHandler
End Sub
[/vba]Вдруг угадал. Удачи.


Ученик.
Одесса - Украина
 
Ответить
СообщениеНе знаю, может и угадаю вашу логику хотелки, возьму за основу код от Елены и чуть его изменю: [vba]
Код
Option Explicit
Const stdata        As String = "Y17"

Public Sub SplitTable_v2()
    On Error GoTo ErrorHandler
    Dim i As Long, ir As Long, cc As Long

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.CutCopyMode = False

    With ActiveSheet

        Dim st      As Range
        Set st = .Range(stdata)

        Dim nCol    As Long
        nCol = st.CurrentRegion.Columns.Count

        Dim Offs    As Long
        Offs = nCol + 2

        Dim rTitle  As Range
        Set rTitle = st.Resize(1, nCol)

        Dim arrData
        arrData = st.CurrentRegion.Value

        Dim c0      As Long
        c0 = st.Column

        Dim r0      As Long
        r0 = st.Row

        Dim lCol    As Long
        lCol = .Cells(r0 - 1, .Columns.Count).End(xlToLeft).Column

        For cc = st.Column + Offs To lCol Step Offs
            .Range(.Cells(r0, cc), _
                    .Cells(r0 + UBound(arrData), cc + nCol - 1)).Clear
        Next cc

        c0 = st.Column

        For i = 2 To UBound(arrData)

            If arrData(i, 2) Like "Группа *" Then

                Do
                    c0 = c0 + Offs

                    If c0 > lCol Then Exit For
                Loop Until .Cells(r0 - 1, c0).Value = "Группа"

                If c0 > lCol Then Exit For
                ir = i

            ElseIf i < UBound(arrData) Then

                Do While i < UBound(arrData) And _
                        Not arrData(i, 2) Like "Группа *"
                    i = i + 1
                Loop

                rTitle.Copy .Cells(r0, c0)

                .Cells(r0 + ir - 1, st.Column).Resize(i - ir, nCol).Copy
                .Cells(r0 + 1, c0).PasteSpecial xlPasteValuesAndNumberFormats

                .Cells(r0 + ir - 1, st.Column).Resize(i - ir, nCol).Copy
                .Cells(r0 + 1, c0).PasteSpecial xlPasteFormats

                i = i - 1
            End If

        Next i

    End With

ExitHandler:
    Application.CutCopyMode = False
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Exit Sub

ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHandler
End Sub
[/vba]Вдруг угадал. Удачи.

Автор - MikeVol
Дата добавления - 05.07.2026 в 10:46
Dalm Дата: Воскресенье, 05.07.2026, 16:22 | Сообщение № 25
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 206
Репутация: 4 ±
Замечаний: 0% ±

Excel 2019
MikeVol, вот теперь нормально стало.
Спасибо.
 
Ответить
СообщениеMikeVol, вот теперь нормально стало.
Спасибо.

Автор - Dalm
Дата добавления - 05.07.2026 в 16:22
Dalm Дата: Понедельник, 06.07.2026, 02:02 | Сообщение № 26
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 206
Репутация: 4 ±
Замечаний: 0% ±

Excel 2019
MikeVol, я увеличил расстояние между желтыми ячейками - и макрос стал выдавать только первую часть большой таблицы.
Остальные части - игнорирует, хотя на листе по прежнему находятся желтые ячейки с надписью "Группа".
Как исправить макрос ?
К сообщению приложен файл: dalm_2_2.xlsm (32.3 Kb)
 
Ответить
СообщениеMikeVol, я увеличил расстояние между желтыми ячейками - и макрос стал выдавать только первую часть большой таблицы.
Остальные части - игнорирует, хотя на листе по прежнему находятся желтые ячейки с надписью "Группа".
Как исправить макрос ?

Автор - Dalm
Дата добавления - 06.07.2026 в 02:02
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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