Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - преобразование таблиц.

Ответить
Настройки темы
2016 - преобразование таблиц.

Пользователь


Сообщения: 77
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: Elizavetta
Дата: 14-01-2021
И снова здравствуйте, возникла потребность в помощи в облегчении себе задачи, а именно таблички, привести к одному формату.
Вот файл.
Там у нескольких групп, в разное время мерилось N-Количество переменных.
Например, в этом примере 4 группы и 3 измерения
вот первая группа рис.1
т.е. всегда есть группа -фон, а остальные временные интервалы могут по разному называться 4, или 4 сутки, 22 сутки и так далее. Сколько угодно измерений.
если у нас 4 группы и 3 измерения с фоном, итого 12 таблиц, ну в этом примере.
Таблички на рисунке 1 несут чисто статистическую информацию. Также в таблице гема. есть описательные статистки для каждой группы и каждого измерения.
Таким образом нужен макрос которые соответствующие описательные статистки будет прикреплять к основным таблицам.
Например. Программа видит. так гр=1
Rank Sum - фон Rank Sum - 4 сутки
пошла искать данные по описательным статистикам для фона и 4 суток первой группы и соединять с соответствующей строкой. Для наглядности
это выглядеть должно так:
фон для группы 1 это начинается с ячейки P70, а графа 4 сутки для первой группы начинаются ячейка P34

после соединения это должно выглядеть как на рис.3


очень важный ориентир , что в таблице с описательными статистиками может не быть слово сутки
например
Ячейка O101 гр = 2,00, время = 42, но программа то просканировала, что есть таблица ,гр=2 Rank Sum - фон Rank Sum - 42 сутки, это ячейки C и D53
и должна увидеть ключевые зацепки гр = 2,00, время = 42 и Rank Sum - фон Rank Sum - 42 сутки значит эта табличка с описательными статистиками относится именно к таблице гр = 2,00, время = 42

у меня есть файлы, где например гр = 2,00, время = 42 и Rank Sum - фон Rank Sum - 42нед , а описательные статистики гр = 2,00, время = 42не

в этом примере 3 переменные, их может быть и больше, а может быть и вообще одна.
Слово время обязательно указывает измерение

Отправлено: 01:10, 18-04-2016

 

Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата Elizavetta:
в этом примере 4 группы и 3 измерения »
Elizavetta, я вижу 4 группы и 4 измерения
Цитата Elizavetta:
и соединять с соответствующей строкой »
"Соответствующая" - это какая? Что подразумевается под словом "соединять"?

Если я правильно понял пример - код должен быть вроде такого (запустите при активной странице с исходными данными). Если нет - приложите файл с листом-результатом работы кода, листом с правильным результатом выполненным вручную и дайте комментарии по несоответствию результатов. Код привязан к строчкам "Rank Sum - ", "гр = X,00, время = XX сутки" и "Описательные статистики", если этих фраз в файле не будет, или будут находится в произвольных местах - код нужно будет адаптировать.

код
Код: Выделить весь код
Public Sub weres()
    Dim myCell As Range, DataRange As Range, fRange As Range
    Dim dataSht As Worksheet, targetSht As Worksheet
    Dim j As Long
    Dim strT1 As String, strT2 As String, strT3 As String
    
    Set dataSht = ActiveSheet
    Set targetSht = ActiveWorkbook.Worksheets.Add
    Set DataRange = dataSht.UsedRange
    
    For Each myCell In Intersect(DataRange, dataSht.Columns(3))
        If myCell.Text Like "Rank Sum - *" And myCell.Offset(0, 1).Text Like "Rank Sum - *" Then
            j = targetSht.UsedRange.Row + targetSht.UsedRange.Rows.Count + 1
            strT1 = Replace(myCell.Text, "Rank Sum - ", "")
            If strT1 Like "* *" Then strT1 = Left(strT1, InStr(strT1, " "))
            strT2 = Replace(myCell.Offset(0, 1).Text, "Rank Sum - ", "")
            If strT2 Like "* *" Then strT2 = Left(strT2, InStr(strT2, " "))
            strT3 = myCell.Offset(-1, -1).Value
            strT3 = Replace(Left(strT3, InStr(strT3, " ") - 1), "=", " = ")
            
            
            myCell.Offset(-1, -1).Copy targetSht.Cells(j, 2)
            Range(targetSht.Cells(j, 2), targetSht.Cells(j, 18)).Merge
            
            myCell.Offset(0, 2).Resize(4, 8).Copy targetSht.Cells(j + 1, 11)
            myCell.Offset(1, -1).Resize(3, 1).Copy targetSht.Cells(j + 2, 2)
            targetSht.Cells(j + 2, 3).Resize(3, 1).Value = strT1
            myCell.Offset(1, -1).Resize(3, 1).Copy targetSht.Cells(j + 5, 2)
            targetSht.Cells(j + 5, 3).Resize(3, 1).Value = strT2
            
            Set fRange = dataSht.Cells.Find(strT3 & ",00, время = " & strT1)
            If Not (fRange.Offset(2, 0).Text Like "Описательные статистики*") Then
                Set fRange = dataSht.Cells.FindNext(After:=fRange)
            End If
            fRange.Offset(3, 1).Resize(1, 7).Copy targetSht.Cells(j + 1, 4)
            fRange.Offset(4, 5).Resize(1, 2).Copy targetSht.Cells(j + 1, 8)
            fRange.Offset(5, 1).Resize(3, 7).Copy targetSht.Cells(j + 2, 4)
            Set fRange = dataSht.Cells.Find(strT3 & ",00, время = " & strT2)
            If Not (fRange.Offset(2, 0).Text Like "Описательные статистики*") Then
                Set fRange = dataSht.Cells.FindNext(After:=fRange)
            End If
            fRange.Offset(5, 1).Resize(3, 7).Copy targetSht.Cells(j + 5, 4)
            
        End If
    Next myCell
    
    Set DataRange = Nothing
    Set dataSht = Nothing
    Set targetSht = Nothing
    Set fRange = Nothing
End Sub

Отправлено: 16:58, 26-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - преобразование таблиц.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - [решено] удаление таблиц kontox Microsoft Office (Word, Excel, Outlook и т.д.) 6 30-05-2013 03:28
2007 - Сравнение таблиц. a715 Microsoft Office (Word, Excel, Outlook и т.д.) 1 16-06-2011 22:52
Прочие БД - Просмотр таблиц Interbase lxa85 Программирование и базы данных 3 07-06-2010 17:40
Импортирование таблиц ][alter Вебмастеру 1 29-09-2007 22:11
Расположение таблиц Qwe1 Вебмастеру 4 19-06-2005 02:13




 
Переход