Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2019, 13:09   #1
бетон
Пользователь
 
Регистрация: 11.06.2019
Сообщений: 30
По умолчанию Простое перечисление по датам с нумерацией строк

Добрый день!
Уважаемые программисты, если возможно в Экселе 2007 с помощью формулы создать список в три столбца из таблицы 500х1500, то очень прошу помочь.
Взываю к сообществу после бесплодных самостоятельных попыток!!!
Вложения
Тип файла: xlsx Список в три столбца.xlsx (19.2 Кб, 26 просмотров)
бетон вне форума Ответить с цитированием
Старый 18.06.2019, 13:22   #2
Igor1961
Пользователь
 
Регистрация: 05.10.2015
Сообщений: 39
По умолчанию

В реальности в исходной таблице присутствуют все 365 дней на каждый год (строка 3 в файле) ?
Igor1961 вне форума Ответить с цитированием
Старый 18.06.2019, 13:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от бетон Посмотреть сообщение
с помощью формулы создать список в три столбца из таблицы 500х1500
это наверняка можно сделать формулами.
Но я бы лично решал такую задачу через макрос на VBA
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.06.2019, 13:34   #4
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

наверное в разделе "Нужный результат"

столбец C со списком событий лишний

тогда "Нужный результат" превращается в простую таблицу

повёрнутую на 90 градусов относительно таблицы исходной

кажись нужна команда =ТРАНСП
необычно вставляемая читайте справку

и я применил =ТРАНСП в таблице ниже
Вложения
Тип файла: xlsx ТРАНСП Список.xlsx (22.5 Кб, 23 просмотров)
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 18.06.2019 в 13:48.
сфинкс вне форума Ответить с цитированием
Старый 18.06.2019, 14:08   #5
бетон
Пользователь
 
Регистрация: 11.06.2019
Сообщений: 30
По умолчанию

Уважаемый Сфинкс!
Именно столбец С нужен. Вся соль в нем и заключается - в перечислении произошедших событий в конкретный день.
Нумерация - либо событий, либо дней, в зависимости от варианта, нужна для ориентирования по таблице результата.
бетон вне форума Ответить с цитированием
Старый 19.06.2019, 11:28   #6
бетон
Пользователь
 
Регистрация: 11.06.2019
Сообщений: 30
По умолчанию

Добрый день!
Serge_Bliznykov, прошу решить эту задачу если не формулой, то макросом. Очень!
бетон вне форума Ответить с цитированием
Старый 19.06.2019, 12:32   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

пилите под себя
Код:
Sub goMfucker()
    Dim sh1 As Worksheet
    Dim sh As Worksheet
    Dim firstRow As Integer
    Dim lastRow As Integer
    Dim lastCol As Integer
    Dim iCol As Integer
    Dim iRow As Integer
    Dim iiRow As Integer
    Dim i As Integer
    Dim firstEvent As Boolean
        Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableCancelKey = xlDisabled
    Set sh1 = Sheets(1)
    Set sh = Sheets(2)
    With sh1
        firstRow = 4
        lastRow = 29
        lastCol = 14
        sh.Cells.ClearContents
        .Range("A" & firstRow & ":A" & lastRow).Copy
        sh.Range("D1").PasteSpecial Transpose:=True
        iiRow = 2
        For iCol = 2 To lastCol
            firstEvent = True
            For iRow = firstRow To lastRow
                If .Cells(iRow, iCol).Value <> vbNullString Then
                    i = iRow - firstRow + 4
                    If firstEvent Then
                        sh.Cells(iiRow, "B") = .Cells(firstRow - 1, iCol)
                        firstEvent = False
                    End If
                    sh.Cells(iiRow, "C") = sh.Cells(iiRow, "C").Value & .Cells(iRow, "A").Value & vbNewLine
                    sh.Cells(iiRow, i) = .Cells(iRow, iCol).Value
                    sh.Cells(iiRow, "A") = iiRow - 1
                End If
            Next iRow
            If Not firstEvent Then iiRow = iiRow + 1
        Next iCol
     End With
    Set sh1 = Nothing
    Set sh = Nothing
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    MsgBox "DONE!"
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 19.06.2019 в 12:36.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.06.2019, 11:06   #8
бетон
Пользователь
 
Регистрация: 11.06.2019
Сообщений: 30
По умолчанию

Aleksandr H.,
спасибо за ответ!
Возникли вопросы:
Буквально ли понимать goMfucker
1. Можно ли получить результат на новом листе с названием, например, "отчет"
2. Почему нет строки с порядковым номером 2
3. Можно ли получить результат с форматом "дата" для столбца В
4. Можно ли получить результат с перечислением событий в столбце С через запятую с пробелом
5. Можно ли получить результат с динамическими свойствами
бетон вне форума Ответить с цитированием
Старый 21.06.2019, 11:15   #9
бетон
Пользователь
 
Регистрация: 11.06.2019
Сообщений: 30
По умолчанию

добавляю результат
Вложения
Тип файла: docx результат.docx (10.3 Кб, 19 просмотров)
бетон вне форума Ответить с цитированием
Старый 21.06.2019, 12:37   #10
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от бетон Посмотреть сообщение
1. Можно ли получить результат на новом листе с названием, например, "отчет"
2. Почему нет строки с порядковым номером 2
3. Можно ли получить результат с форматом "дата" для столбца В
4. Можно ли получить результат с перечислением событий в столбце С через запятую с пробелом
5. Можно ли получить результат с динамическими свойствами
1. Да
2. Не знаю
3. Да
4. Да
5. Что такое "динамическое свойство"? Читайте о UsedRange


Код:
Option Explicit

Sub goMfucker()
    Dim sh1 As Worksheet
    Dim sh As Worksheet
    Dim firstRow As Integer
    Dim lastRow As Integer
    Dim lastCol As Integer
    Dim iCol As Integer
    Dim iRow As Integer
    Dim iiRow As Integer
    Dim i As Integer
    Dim firstEvent As Boolean
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableCancelKey = xlDisabled
    Set sh1 = Sheets(1)
    Set sh = Sheets("Отчет")
    With sh1
        firstRow = 4
        lastRow = 29
        lastCol = 14
        sh.Cells.ClearContents
        .Range("A" & firstRow & ":A" & lastRow).Copy
        sh.Range("D1").PasteSpecial Transpose:=True
        sh.Columns("B:B").NumberFormat = "dd.mm.yyyy;@"
        iiRow = 2
        For iCol = 2 To lastCol
            firstEvent = True
            For iRow = firstRow To lastRow
                If .Cells(iRow, iCol).Value <> vbNullString Then
                    i = iRow - firstRow + 4
                    If firstEvent Then
                        sh.Cells(iiRow, "B") = .Cells(firstRow - 1, iCol)
                        firstEvent = False
                    End If
                    sh.Cells(iiRow, "C") = sh.Cells(iiRow, "C").Value & .Cells(iRow, "A").Value & ", " & vbNewLine
                    sh.Cells(iiRow, i) = .Cells(iRow, iCol).Value
                    sh.Cells(iiRow, "A") = iiRow - 1
                End If
            Next iRow
            If Not firstEvent Then
                sh.Cells(iiRow, "C") = Left(sh.Cells(iiRow, "C").Value2, Len(sh.Cells(iiRow, "C").Value2) - 4)
                iiRow = iiRow + 1
            End If
        Next iCol
    End With
    Set sh1 = Nothing
    Set sh = Nothing
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    MsgBox "DONE!"
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 21.06.2019 в 13:09.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с нумерацией. dushaq Microsoft Office Word 1 25.01.2014 06:34
Проблема с нумерацией manula Microsoft Office Excel 5 11.09.2013 16:42
проблемы с нумерацией. Shirokuro SQL, базы данных 5 18.09.2012 23:12
Сортировка с нумерацией BloodWizard SQL, базы данных 1 02.05.2010 11:20