Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Макрос формирования новой таблицы

Автор strix1, 30.08.2023, 21:51

« назад - далее »

strix1

Привет.Помогите с макросом.Есть таблица. Нужно что бы часть данных из таблицы Report скопировались в новую на лист1, .В общем смотрите пример.Спасибо.

АП633

А Фамилию получателя и Название подразделения Вы будете вносить в ручную ?

strix1

Цитата: АП633 от 31.08.2023, 08:15А Фамилию получателя и Название подразделения Вы будете вносить в ручную ?
оно всегда одинаковое - останется на постояннку эти столбики - вот единственное что строк бывает разное кол-во в первом листе может быть 1 позиция а может быть и 6-8
 

Serge 007

Здравствуйте

Так надо?
Sub strix1()
Dim LR&
LR = Sheets(1).Cells(Rows.Count, "c").End(xlUp).Row
    Sheets(1).Range("i8").Copy Sheets(2).Range("a9:a" & LR - 6)
    Sheets(1).Range("c15:d" & LR).Copy Sheets(2).Range("b9")
    Sheets(1).Range("h15:h" & LR).Copy Sheets(2).Range("d9")
    Sheets(1).Range("l15:l" & LR).Copy Sheets(2).Range("h9")
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Serge 007

Немного доработал под условия задачи:Sub strix1()
Dim LR&
LR = Sheets(1).Cells(Rows.Count, "c").End(xlUp).Row
    Sheets(2).Range("a9:a" & LR - 6) = DateValue(Replace(Sheets(1).Range("i8"), """", " "))
    Sheets(2).Range("a4") = Replace(Sheets(1).Range("c7"), " месяц", " ")
    Sheets(1).Range("c15:d" & LR).Copy Sheets(2).Range("b9")
    Sheets(1).Range("h15:h" & LR).Copy Sheets(2).Range("d9")
    Sheets(1).Range("l15:l" & LR).Copy Sheets(2).Range("h9")
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

strix1

#5
да спасибо - отлично - единственно что дата как то в странном формате встает - месяц впереди числа 7/31/2023 во так ... и если не сложно можно ли центровать вставленный в ячейку текст? Количество строк наверно не вариант определить никак ? всегда будет передаваться 6шт нельзя сделать что бы определяло одна позиция там или 6?

Serge 007

Цитата: strix1 от 31.08.2023, 10:27дата как то в странном формате встает
У Вас ячейки, в которые вставляется дата - в текстовом формате, поэтому так и получается
Можно вручную изменить на формат даты, можно в макросе (изменения внес, см. ниже)

Цитата: strix1 от 31.08.2023, 10:27центровать вставленный в ячейку текст
Добавил строку в макросе

Цитата: strix1 от 31.08.2023, 10:27Количество строк наверно не вариант определить никак ?
В макрос я уже это заложил: LR = Sheets(1).Cells(Rows.Count, "c").End(xlUp).Row - определяет количество заполненных строк на листе Report и в дальнейшем макрос заполняет лист Лист1 именно этим количеством

Скорректированный макрос:Sub strix1()
Dim LR&
LR = Sheets(1).Cells(Rows.Count, "c").End(xlUp).Row
    With Sheets(2).Range("a9:a" & LR - 6)
        .HorizontalAlignment = xlCenter
        .Value = DateValue(Replace(Sheets(1).Range("i8"), """", " "))
        .NumberFormat = "m/d/yyyy"
    End With
        Sheets(2).Range("a9:a" & LR - 6) = DateValue(Replace(Sheets(1).Range("i8"), """", " "))
        Sheets(2).Range("a4") = Replace(Sheets(1).Range("c7"), " месяц", " ")
        Sheets(1).Range("c15:d" & LR).Copy Sheets(2).Range("b9")
        Sheets(1).Range("h15:h" & LR).Copy Sheets(2).Range("d9")
        Sheets(1).Range("l15:l" & LR).Copy Sheets(2).Range("h9")
End Sub


Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

strix1

#7
Цитата: Serge 007 от 31.08.2023, 10:59Скорректированный макрос:
Спасибо большое хорошо все работает  - можно понаглеть еще (аппетит приходит во время еды))) ? Не знаю просто реально ли это - можно ли что бы макрос сам создавал соседний лист и заводил все туда вместе со статичными полями (которые не помечены желтым) ? и столбик С в созданном листе, как то можно отцентровать по вертикали и горизонту? А в первом листе Report в ячейке D3  можно ли вписывать  текст 00102433   Заранее спасибо и чем обязан буду напишите плз


Serge 007

Цитата: strix1 от 31.08.2023, 11:52макрос сам создавал соседний лист и заводил все туда вместе со статичными полями
Можно
Откуда брать информацию о том, что должно быть на новом листе? Если с листа Лист1, то можно его в коде копировать и вставлять в файл

Цитата: strix1 от 31.08.2023, 11:52столбик С в созданном листе, как то можно отцентровать по вертикали и горизонту?
За это отвечают строки .HorizontalAlignment = xlCenter и .VerticalAlignment = xlCenter

Цитата: strix1 от 31.08.2023, 11:52в первом листе Report в ячейке D3  можно ли вписывать  текст 00102433
Добавьте в код строку: Sheets(1).Range("D3")="00102433"


Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

strix1

Цитата: Serge 007 от 31.08.2023, 12:08Можно
Откуда брать информацию о том, что должно быть на новом листе? Если с листа Лист1, то можно его в коде копировать и вставлять в файл
изначально у нас есть только один лист Report - второй Лист1 нужно вновь создать - добавить в него статичные поля и структуру таблицы как сейчас в лист1 есть (белые)   + добавить динамические из Report (желтые)
      

strix1

Цитата: Serge 007 от 31.08.2023, 12:08За это отвечают строки .HorizontalAlignment = xlCenter и .VerticalAlignment = xlCenter
Добавьте в код строку: Sheets(1).Range("D3")="00102433"



спасибо начинаю немного вникать )))

strix1

Цитата: Serge 007 от 31.08.2023, 12:08Можно
Откуда брать информацию о том, что должно быть на новом листе? Если с листа Лист1, то можно его в коде

Изначально у нас есть только один лист Report - второй нужно создать по структуре как сейчас Лист1 - внести бы в него статические данные (белые заполненые ячейки) и динамические (желтые)

Serge 007

Цитата: strix1 от 31.08.2023, 12:19нужно создать по структуре как сейчас Лист1
Откуда макрос будет брать информацию о том, что должно быть на новом листе?
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

strix1

Цитата: Serge 007 от 31.08.2023, 12:32Откуда макрос будет брать информацию о том, что должно быть на новом листе?

динамику из Report - остальное жестко прописать как тут Sheets(1).Range("D3")="00102433" но надо еще структуру таблицы как то сделать

Serge 007

Цитата: strix1 от 31.08.2023, 12:45жестко прописать ... еще структуру таблицы как то сделать
Откуда макрос будет брать информацию о том, что должно быть на новом листе?
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390