|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - преобразование таблиц. |
|
2016 - преобразование таблиц.
|
Пользователь Сообщения: 77 |
Профиль | Отправить PM | Цитировать
И снова здравствуйте, возникла потребность в помощи в облегчении себе задачи, а именно таблички, привести к одному формату.
Вот файл. Там у нескольких групп, в разное время мерилось 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 |
Динохромный Сообщения: 703
|
Профиль | Отправить PM | Цитировать Цитата Elizavetta:
Цитата 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|